Pavoučí opice - SpiderMonkey
Vývojáři | Mozilla Foundation Mozilla Corporation |
---|---|
Úložiště | ![]() |
Napsáno | C, C ++ |
Operační systém | Cross-platform |
Plošina | IA-32, x86-64, PAŽE, MIPS, SPARC[1] |
Typ | JavaScriptový engine |
Licence | MPL 2.0[2] |
webová stránka | pavoučí opice |
Pavoučí opice je krycí název pro první JavaScriptový engine, napsáno Brendan Eich na Netscape Communications, později vydáno jako open-source a v současné době spravuje Mozilla Foundation.
Dějiny
Eich „napsal JavaScript za deset dní“ v roce 1995,[3]"byli přijati do Netscape s příslibem" dělat Systém "v prohlížeči".[4](Myšlenka používání schématu byla opuštěna, když „technický management [rozhodl], že jazyk musí vypadat jako Java'".)[4] Na konci roku 1996, Eich, potřeboval „vyplatit [podstatné] technický dluh „odešel z prvního ročníku,“ zůstal doma dva týdny, aby přepsal Mochu jako základ kódu, který se stal známým jako SpiderMonkey “.[3] (Mocha byl původní pracovní název jazyka.)[4][5]V roce 2011 Eich přenesl správu kódu SpiderMonkey na Davea Mandelina.[3]
Verze
Verze | Datum vydání | Odpovídající verze ECMAScript | Verze prohlížeče | Přidaná funkčnost |
---|---|---|---|---|
1.0 | Březen 1996 | Netscape Navigator 2.0 | ||
1.1 | Srpna 1996 | Netscape Navigator 3.0 | ||
1.2 | Červen 1997 | Netscape Navigator 4.0 - 4.05 | ||
1.3 | Říjen 1998 | ECMA-262 1. + 2. vydání | Netscape Navigator 4.06-4.7x | |
1.4 | Netscape Server | |||
1.5 | Listopad 2000 | ECMA-262, 3. vydání | Netscape Navigator 6, Firefox 1.0 | |
1.6 | Listopadu 2005[6] | Firefox 1.5 | další metody pole, generika pole a řetězce, E4X | |
1.7 | Říjen 2006 | Firefox 2.0 | iterátory a generátory, příkaz let, porozumění pole, destrukční přiřazení | |
1.8 | Červen 2008 | Firefox 3.0 | generátorové výrazy, uzávěry výrazů | |
1.8.5 | Březen 2011 | ECMA-262, 5. vydání | Firefox 4.0 | Podpora JSON |
1.8.8 | Leden 2012 | Firefox 10.0 | ||
17 | Listopad 2012 | Firefox 17.0 | ||
24 | září 2013 | Firefox 24.0 | ||
31 | Červenec 2014 | Firefox 31.0 | ||
38 | Květen 2015 | Firefox 38.0 | ||
45 | Březen 2016 | Firefox 45.0 | ||
52 | Březen 2017 | Firefox 52.0 |
Standardy
SpiderMonkey implementuje specifikaci ECMA-262 (ECMAScript ). ECMA-357 (ECMAScript pro XML (E4X)) bylo upuštěno počátkem roku 2013.[7]
Interní
SpiderMonkey je napsán C /C ++ a obsahuje tlumočník, IonMonkey Překladač JIT a Popelář.
TraceMonkey
TraceMonkey[8] byl první kompilátor JIT napsaný pro jazyk JavaScript. Původně představen jako možnost v beta verzi a představen v blogu Brendana Eicha 23. srpna 2008[9], kompilátor se stal součástí vydání hlavní řady jako součást SpiderMonkey v Firefox 3.5, poskytující "vylepšení výkonu v rozmezí 20 až 40krát rychlejší" než základní tlumočník v Firefox 3.[10]
Místo kompilace celých funkcí byl TraceMonkey a sledování JIT, který pracuje se záznamem regulační tok a typy dat během provádění tlumočníka. Tato data pak informovala o konstrukci Stopové stromy, vysoce specializované cesty nativní kód.
Vylepšení JägerMonkey nakonec učinily TraceMonkey zastaralým, zejména s vývojem SpiderMonkey odvození typu motor. TraceMonkey ve SpiderMonkey od Firefoxu 11 chybí.[11]
JägerMonkey
JägerMonkey, interně pojmenovaný MethodJIT, byl kompilátor JIT celé metody navržený ke zlepšení výkonu v případech, kdy TraceMonkey nemohl generovat stabilní nativní kód.[12][13] Poprvé byl vydán v Firefox 4 a nakonec úplně nahradil TraceMonkey. Sám byl nahrazen IonMonkey.
JägerMonkey fungoval velmi odlišně od ostatních kompilátorů ve své třídě: zatímco typické kompilátory fungovaly konstrukcí a optimalizací kontrolní tokový graf představující funkci, JägerMonkey místo toho operoval lineární iterací vpřed přes SpiderMonkey bytecode, reprezentace vnitřní funkce. I když to zakazuje optimalizace, které vyžadují přeuspořádání instrukcí, kompilace JägerMonkey má tu výhodu, že je velmi rychlá, což je užitečné pro JavaScript, protože častá je opětovná kompilace kvůli změně typů proměnných.
Mozilla implementovala v JägerMonkey řadu kritických optimalizací, což je nejdůležitější polymorfní vložené mezipaměti a odvození typu.[14]
Rozdíl mezi technikami TraceMonkey a JägerMonkey JIT a potřeba obou byl vysvětlen v článek hacks.mozilla.org. Podrobnější vysvětlení technických podrobností poskytl Chris Leary, jeden z vývojářů SpiderMonkey, v příspěvku na blogu. Další technické informace najdete v blogech jiných vývojářů: dvander, dmandelin.
IonMonkey
IonMonkey je název aktuálního kompilátoru JavaScript JIT od Mozilly, jehož cílem je umožnit mnoho nových optimalizací, které byly s předchozí architekturou JägerMonkey nemožné.[15]
IonMonkey je tradičnější překladač: překládá SpiderMonkey bytecode do kontrolní tokový graf, použitím statický jednotný formulář přiřazení (SSA) pro mezilehlé zastoupení. Tato architektura umožňuje použití dobře známých optimalizací z jiných programovacích jazyků pro JavaScript, včetně specializace typů, funkce vložení, lineární skenování přidělení registru, odstranění mrtvého kódu, a pohyb kódu invariantního k smyčce.[16]
Kompilátor může vydávat rychle nativní kód překlady funkcí JavaScriptu na internet PAŽE, x86, a x86-64 platformy. Je to výchozí modul od Firefoxu 18.[17]
OdinMonkey
OdinMonkey je název nového optimalizačního modulu Mozilly pro asm.js, snadno kompilovatelná podmnožina JavaScriptu. Samotný OdinMonkey není kompilátor JIT, používá aktuální kompilátor JIT. Je součástí Firefoxu od vydání 22.
Použití
SpiderMonkey má být vložen do jiných aplikací, které poskytují prostředí hostitele pro JavaScript. Následuje neúplný seznam:
- Mozilla Firefox, Thunderbird, Mořská opice a další aplikace, které používají Rámec aplikace Mozilla
- Vidlice Firefoxu včetně Bledý měsíc, Bazilišek a Waterfox internetové prohlížeče.
- Aplikace pro ukládání dat:
- Adobe Acrobat a Adobe Reader, Adobe Flash Professional, a Adobe Dreamweaver. Adobe Acrobat DC používá Spidermonkey 24.2 s podporou ECMA-357 vpřed.[20]
- GNOME desktopové prostředí, verze 3 a novější
- Yahoo! Widgety, dříve pojmenovaný Konfabulátor
- FreeSWITCH, telefonický modul s otevřeným zdrojovým kódem, používá SpiderMonkey, aby uživatelům umožnil psát skripty pro správu hovorů v JavaScriptu
- Textové webové prohlížeče ELinks a edbrowse používají SpiderMonkey k podpoře JavaScriptu[21]
- Části SpiderMonkey se používají v Víno projektu JScript (znovu) implementace[22]
- Synchronet, BBS, e-mailový, webový a aplikační server využívající stroj SpiderMonkey
- JavaScript OSA, SpiderMonkey meziprocesová komunikace jazyk pro Macintosh počítač
- 0 n.l., strategická hra v reálném čase
- SpiderMonkey se používá také v mnoha dalších open-source projektech; externí seznam je udržován na vývojářských stránkách Mozilly.[23]
SpiderMonkey obsahuje JavaScript Shell pro interaktivní vývoj JavaScriptu a pro vyvolání souborů programu JavaScript pomocí příkazového řádku.[24]
Viz také
Reference
- ^ "1.8.8 - SpiderMonkey | MDN". Developer.mozilla.org. 10. ledna 2013. Archivováno z původního dne 2. května 2013. Citováno 21. března 2013.
- ^ Zásady licencování Mozilla, mozilla.org, archivováno z původního dne 2. dubna 2013, vyvoláno 26. března 2013
- ^ A b C Eich, Brendan (21. června 2011). „Nový majitel modulu modulu JavaScript“. BrendanEich.com. Archivováno z původního dne 14. července 2011. Citováno 1. července 2011.
- ^ A b C Eich, Brendan (3. dubna 2008). "Popularita". BrendanEich.com. Archivováno z původního dne 3. července 2011. Citováno 1. července 2011.
- ^ Eich, Brendan (19. srpna 2011). "Mapování Monkeysphere". Archivováno z původního dne 13. ledna 2013. Citováno 19. srpna 2011.
- ^ „Nové v JavaScriptu 1.6“. Archivováno z původního dne 5. září 2015. Citováno 28. července 2015.
- ^ „759422 - Odebrat použití e4x při vytváření účtu“. Citováno 5. února 2013.
- ^ „JavaScript: TraceMonkey, MozillaWiki“. Citováno 22. července 2020.
- ^ „TraceMonkey: JavaScript Lightspeed, blog Brendana Eicha“. Citováno 22. července 2020.
- ^ Paul, Ryan (22. srpna 2008). „Firefox výrazně zvýší výkon JavaScriptu“. Ars Technica. Archivováno z původního dne 6. května 2012. Citováno 21. března 2013.
- ^ Nethercote, Nicholas (1. listopadu 2011). „SpiderMonkey drží dietu | Nicholas Nethercote“. Blog.mozilla.com. Archivováno z původního dne 28. března 2012. Citováno 21. března 2013.
- ^ „JaegerMonkey - vždy rychlý JavaScript!» Mystery Bail Theatre “. Bailopan.net. 26. února 2010. Archivováno z původního dne 24. března 2013. Citováno 21. března 2013.
- ^ Paul, Ryan (9. března 2010). „Mozilla si půjčuje od WebKitu, aby vytvořila rychlý nový engine JS“. Ars Technica. Archivováno z původního dne 16. dubna 2012. Citováno 21. března 2013.
- ^ „JaegerMonkey - MozillaWiki“. Wiki.mozilla.org. Archivováno z původního dne 23. srpna 2013. Citováno 21. března 2013.
- ^ „Platform / Features / IonMonkey - MozillaWiki“. Wiki.mozilla.org. 11. února 2013. Archivováno z původního dne 8. března 2013. Citováno 21. března 2013.
- ^ „IonMonkey: nový kompilátor Java JIT od Mozilly“. Infoq.com. Archivováno z původního dne 8. prosince 2012. Citováno 21. března 2013.
- ^ „Firefox Notes - Desktop“. Mozilla.org. 8. ledna 2013. Archivováno z původního dne 2. září 2014. Citováno 21. března 2013.
- ^ "Změny JavaScriptu v MongoDB 3.2 - MongoDB Manual 3.4". Archivováno z původního dne 6. června 2017. Citováno 23. listopadu 2016.
- ^ „Vydání Riak 0.8 a JavaScript Map / Reduce“. Archivováno z původního dne 3. listopadu 2011. Citováno 24. dubna 2011.
- ^ „Dokumentace Acrobat DC SDK“. help.adobe.com. Citováno 27. února 2020.
Core JavaScript engine migroval na verzi 24.2 SpiderMonkey (základní JavaScript engine od Mozilly).
- ^ Bolso, Erik Inge (8. března 2005). "Roundup prohlížeče v textovém režimu 2005". Linux Journal. Archivováno z původního dne 15. března 2010. Citováno 5. srpna 2010.
- ^ seznam adres pro víno-cvs Archivováno 7. února 2009 v Wayback Machine, 16. září 2008: „jscript: Přidán překladač regulárních výrazů založený na implementaci Mozilla regexp“
- ^ „SpiderMonkey> FOSS“. Webové dokumenty MDN. Citováno 2. dubna 2019.
- ^ "Úvod do prostředí JavaScriptu". MDN. Mozilla Developer Network. 29. září 2010. Archivovány od originál dne 29. června 2011. Citováno 14. prosince 2010.
Prostředí JavaScriptu je program příkazového řádku obsažený v distribuci zdrojů SpiderMonkey. [...] Můžete jej použít jako interaktivní prostředí [...] Můžete také předat na příkazovém řádku soubor programu JavaScript ke spuštění [...]