UTVIKLING

Lager ny JavaScript-motor til Firefox

Lover bedre opplevelse med «IonMonkey» og mindre merkbar minnehåndtering.

Harald BrombachHarald BrombachNyhetsleder
27. apr. 2011 - 15:35

Da Firefox 4 ble lansert for en drøy måned siden, var JavaScript-motoren JägerMonkey blant de større nyhetene. JägerMonkey er i likhet med blant annet TraceMonkey et tillegg til den ordinære JavaScript-motoren i Firefox, SpiderMonkey. Begge er laget for å forbedre ytelsen i tilfeller hvor ordinær tolking av koden er lite optimalt.

Nå planlegger Mozilla flere forbedringer i JavaScript-kjøringen i Firefox. Dette inkluderer en ny JIT-kompilator hvor man henter en del optimaliseringsideer fra Googles Crankshaft. Dette inkluderer støtte for blant annet eliminering av død kode og en hel del som Mozillas David Mandelin omtaler som avansert optimalisering i dette blogginnlegget.

Mozilla planlegger også å utstyre JavaScript-motorten i Firefox med et nytt debuggings-API (programmeringsgrensesnitt). Dette kalles for Debug-objektet, som skal tilby et renere grensesnitt og i større grad isolere debuggere fra programmer de debugger. API-et støtter blant annet fjerntilkobling, slik at det vil være mulig å debugge en webside som kjøres på en mobil ved bruke en debugger på en pc.

API skal være ferdig designet. Arbeidet med å implementere det starter nå.

I blogginnlegget forteller Mandelin at ett av de største ytelsesproblemene i Firefox nå er pauser som oppstår i forbindelse med garbage collection (GC), en form for automatisk minnehåndtering som benyttes av blant annet JavaScript.

Ifølge Mandelin skal dette løses ved å ta i bruk inkrementell GC, noe som betyr at man i stedet for å stoppe kjøringen av programmet for å markere alt minnet som skal frigjøres, vil man heller markere litt av det som skal frigjøres i løpet av korte, men periodiske pauser. Målet er at disse pausene, som kan være noen millisekunder lange, skal være så korte at de ikke vil merkes i noen særlig grad.

På lengre sikt er målet å gå over til generasjonsorientert GC, som skal være veldig rask til å inndrive kortlivede objekter, og som også skal bidra til å det går raskere å opprette objekter.

Flere detaljer om IonMonkey og de andre forbedringene som planlegges, finnes her.

    Les også:

Les mer om:
Del
Kommentarer:
Du kan kommentere under fullt navn eller med kallenavn. Bruk BankID for automatisk oppretting av brukerkonto.