Firefox skaber hurtigere kald mellem Webassembly og Javascript

Illustration: Version2
Bedre ydelse ved interoperabilitet mellem Javascript og den nye bytecode-standard.

Mozilla vil gøre det nemmere at blande Webassembly med almindelig Javascript i Firefox.

Webassembly er en nyere standard, som kan give webudviklere mange alternativer til Javascript, når der skal kodes browserapps. Webassembly specificerer en standard for bytekode og en tilhørende virtuel maskine, som kan afvikles lige godt i alle de fire store browsere. Indtil videre er det C, C++ og Rust, der er tale om, men teknologien åbner for, at flere sprog kan komme til.

Læs også: Webassembly kan blive webbets næste revolution og sætte Javascript på porten

I den seneste beta-udgave af Firefox er kald mellem Webassemblys binære format og Javascript gjort hurtigere, så det er mere praktisk at kombinere de to muligheder. Det gør det eksempelvis mere ukompliceret at kalde biblioteker imellem de to sprog-faciliteter. Det skriver Infoworld.

Webassembly kan fungere som en støttefunktion til kode skrevet i Javascript og tage sig problemer, der kræver høj ydelse. Men dette scenarie har indtil nu været forhindret af langsomme kald mellem de to sprog, mener Mozilla.

Beta-versionen af Firefox får endda disse kald til at foregå hurtigere, end kald mellem Javascript-funktioner, så længe de da ikke er inlinet, hvilket er processen, hvor compileren indsætter en funktion som bytecode, i stedet for at foretage et egentligt kald.

Optimeringen fungerer lige godt begge veje. Mozilla har også optimeret kald fra Webassembly til Javascripts indbyggede funktioner, så som Math.random.

Mozilla forventer, at andre browserproducenter også vil optimere kald mellem Webassembly og Javascript.

Webassembly tog sin begyndelse i 2015 og byggede videre på ideerne i Asm.js, der var en delmængde af Javascript, som browseren var finjusteret til at afvikle med høj ydelse. Asm.js blev anvendt som et slags ‘Javascript-assembler,’ der gav mulighed for nemmere krydskompilering af andre sprog til brug i webapplikationer.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Følg forløbet
Kommentarer (3)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Sune Marcher

Alle sprog med en LLVM backend er vel klar til wasm?


Både og – én ting er at du kan generere den korrekte bytecode, men det er ikke alle sprogs runtimes der passer lige godt til wasm platformen.

Og én ting er at kunne programmere i et sprogs syntax, men hvis du ikke får glæde af alt hvad det normalt kan tilbyde af runtime og økosystem, er det så dét værd? Java (og andre JVM baserede ting) vil nok kræve en del shoehorning...

Et sprog som Go er nok et lidt bedre match (på trods af garbage collection), men kan man fx få noget der bruger massive mængder af goroutines og channels til at fungere fornuftigt på wasm platformen?

  • 1
  • 0
Log ind eller Opret konto for at kommentere