Den seneste store Creator's Update til Windows 10, som Microsoft lige nu er i færd med at rulle ud til brugerne, indeholder også en opdateret version af Edge-browseren. Og Microsoft fortsætter med at tage en lidt anden tilgang til en helt central komponent end de øvrige konkurrenter.
JavaScript-motoren er en vigtig del af en moderne browser, fordi større og tungere applikationer, samt styring af brugerfladekomponenter, er afhængige af JavaScript. Googles V8-motor, Mozillas Spider-Monkey og Webkits JavaScriptCore prioriterer af samme grund maksimal ydelse ved at oversætte hele scriptet til bytecode, som kan afvikles hurtigt og effektivt.
Men Microsoft har med Chakra, som er motoren i Edge, valgt at prioritere hurtig opstartstid og lavere hukommelsesforbrug, og dén tendens har selskabet fortsat i den nyeste udgave, skriver program manager for Chakra, Limin Zhu, i et blogindlæg.
Sætter funktioner på hold
Chakra laver en 'deferred' oversættelse til bytecode. Det vil sige, at den laver en hurtig analyse og venter med at oversætte funktioner, som kun måske vil blive kaldt. Tanken er, at der dermed ikke bruges hukommelse på bytecode til funktioner, som ikke bliver brugt, og scriptet er også hurtigere klar til afvikling.
Det har Microsoft nu udbygget med 're-deferring'. Det dækker over, at en funktion, som er blevet oversat og brugt, men ikke længere bruges aktivt, kan blive ryddet op, så bytecoden frigives fra hukommelsen, og funktionen vender tilbage til den løst analyserede status.
Ifølge Microsoft kan det spare 6-12 procent hukommelse i en webapplikation.
Læs også: Anders Hejlsberg: Typescript-compiler giver Javascript-udviklere mere intelligente værktøjer
Ulempen er, at Chakra skal afbalancere oprydningen, for ellers vil det koste cpu-kræfter, hver gang funktionen skal oversættes til bytecode. Derfor tjekker Chakra efter et variabelt antal cyklusser, hvorvidt den pågældende funktion har været kaldt af scriptet.
Lige nu bruges metoden kun på visse typer funktioner, men Microsoft arbejder på at udvide det i kommende opdateringer.
Alle JavaScript-motorer bruger en Just-In-Time (JIT) compiler til at oversætte fra JavaScript til en mere effektiv bytecode, men mens de øvrige motorer har optimeret til hurtig oversættelse af hele applikationen fra begyndelsen, så oversætter Chakra altså lidt ad gangen. Det kan gøre det vanskeligere at sammenligne ydelsen mellem motorerne, da de kan have forskellige styrker og svagheder alt efter brugsscenarierne.
JavaScript er desuden ikke længere blot en konkurrenceparameter mellem browserne, men også på serversiden, da Microsoft sidste år frigav en open source-version af Chakra, ligesom projektet ChakraCore gør det muligt at bruge Chakra som motor med Node.js ligesom man kan med Googles V8.