Mozilla heeft de OdinMonkey-optimalisatiemodule voor JavaScript toegevoegd aan de laatste nightly build van Firefox. Volgens Mozilla kunnen de JavaScript-prestaties de prestaties van native code benaderen als developers C- of C++-code laten compileren door OdinMonkey.
De OdinMonkey-engine, die gebruik maakt van asm.js, kan 'low-level' JavaScript-code genereren dankzij ondersteuning voor de emscripten-compiler voor JavaScript. Deze compiler accepteert C- en C++-code, en laat deze draaien in een veilige JavaScript-sandbox. Door de optimalisaties van asm.js komen de prestaties van OdinMonkey-scriptcode volgens Mozilla dicht in de buurt van native code.
Volgens benchmarks zouden de prestaties een factor twee langzamer zijn, terwijl de huidige JavaScript-engines in Chrome en Firefox vele malen langer doen over het verwerken van de code. OdinMonkey moet het onder andere voor gamedevelopers mogelijk maken om complexere games te bouwen die in een webbrowser kunnen draaien.
Volgens Mozilla is een groot voordeel van de OdinMonkey-implementatie, naast de aanzienlijke snelheidswinst, dat JavaScript-code in andere browsers gewoon kan blijven draaien. De huidige implementatie van asm.js is opgenomen in de laatste nightly build van Firefox. Deze is beschikbaar voor de 32bit- en 64bit-versies van Firefox voor Windows en Linux. Testversies voor OS X en Firefox on ARM zijn in aantocht. Naar verwachting gaat OdinMonkey deel uitmaken van Firefox 22. Deze staat voor een release in juni op de agenda.
Niet echt. Odinmonkey gaat niet blind er van uit dat "use asm" klopt. De "use asm" module wordt eerst gecontroleerd. Dan komt er in de javascript console een melding dat die var a = 3.0+1; regel niet aan de asm.js spec voldoet en wordt het geheel alsnog door de normale javascript engine afgehandeld.En het gaat op zich wel degelijk tegen ECMA in, omdat als je var a = 3.0+1; schrijft met "use asm"; erboven, dan loopt hij daar op stuk.
[Reactie gewijzigd door _V_ op vrijdag 22 maart 2013 15:34]
[Reactie gewijzigd door Niet Henk op vrijdag 22 maart 2013 13:13]
Daar wordt een stap over geslagen; de C/C++ wordt naar een javascript subset vertaald/gecompileerd (door bijvoorbeeld emscripten). Deze subset is gespecifeerd als asm.js. Dus je zou ook zonder tussenkomst van emscripten direct javascript kunnen schrijven die aan de specificatie voldoet.als developers C- of C++-code laten compileren door OdinMonkey.
Odinmonkey heet niet asm.js. asm.js is de "'low-level' JavaScript-code" die gegenereerd kan worden door emscripten. Odinmonkey test of de javascript aan de spec voldoet en, zo ja, zorgt dat deze Ahead of Time (AOT) ipv Just-In-Time (JIT) gecompileerd wordt.De OdinMonkey-engine, asm.js geheten, kan 'low-level' JavaScript-code genereren
Dat kan, maar is wel verre van praktisch. De subset is namelijk bijzonder strikt en beperkt, en om 't performant te maken maakt Emscripten gebruik van manual memory management (gemapped in een typed Array). Dus hoewel de syntax nog steeds JavaScript is, betekent het dat je met de hand asm.js-compliant code schrijven beter kunt vergelijken met handmatig assembly code schrijven dan JavaScript of zelfs C++ code schrijven.Dus je zou ook zonder tussenkomst van emscripten direct javascript kunnen schrijven die aan de specificatie voldoet.
[Reactie gewijzigd door neoeldex op vrijdag 22 maart 2013 13:58]
Op dit item kan niet meer gereageerd worden.