SpiderMonkey
<s>SpiderMonkey je kodni naziv za prvi ikada JavaScript engine, koji je napisao Brendan Aik u Netscape Communications, kasnije objavljen kao open source a sada ga održava Mozilla Foundation.</s><s>SpajderManki obezbeđuje JavaScript podršku za Mozilla Firefox i različite ugradnje kao što je GNOME 3 desktop.</s>

<s>Istorija
Aik "je napisao JavaScript za deset dana" 1995-e, bio je "regrutovan u Netscape uz obećanje da će 'raditi Scheme' u pretraživaču". (Ideja korišćenja Scheme je napuštena kad je "inžinjerski menadžment [odlučio] da jezik mora ‘izgledati kao Java’".) U jesen 1996,Aik, je morao da "otplati znatne tehničke dugove" zaostale još iz prve godine, "ostao je kući dve nedelje da prepravi Mocha-u kao kodnu bazu koja je postala poznata kao SpiderMonkey".</s><s>Ime SpiderMonkey je možda izabrano pozivanje na film Beavis and Butt-head Do America, u kom junak Tom Anderson pominje da su se slova u naslovu "drkala kao par pauk-majmuna." 2011., Aik je prepustio upravljanje SpiderMonkey kodom Dejvu Mendelinu.</s>

<s>TraceMonkey 
TraceMonkey je prvi JIT kompajler napisan za JavaScript jezik.</s><s>Kompajler je prvi kut izašao kao deo SpiderMonkey-a u Firefox 3.5, omogućivši "poboljšanja performansi između 20 i 40 puta" u odnosu na osnovni interpreter u Firefox 3.</s>

<s>Umesto kompajliranja celih funkcija, TraceMonkey je tracing JIT, koji radi beležeći kontrou toka i tip podataka tokom izvršavanja interpretera.</s><s>Ovi podaci zatim informišu konstrukciju Trace Stabala, visoko specijalizovanih puteva prvobitnog koda.</s>

<s>Poboljšanja u JägerMonkey-u su eventualno učinila TraceMonkey zastarelim, pogotovo razvijanjem SpiderMonkey type inference endžina.</s><s>TraceMonkey je odsutan iz SpiderMonkey-a od Firefox 11 pa nadalje.</s>

<s>JägerMonkey 
JägerMonkey,ili unutrašnje nazvan MethodJIT, je bio JIT kompajler dizajniran da unapredi performanse u slučajevima gde TraceMonkey nije uspevao da generiše stabilan izvorni kod.</s><s>Prvi put se pojavio sa Firefox 4 i u potpunosti zamenio TraceMonkey.</s><s>Samom njega je kasnije zamenio IonMonkey.</s>

<s>JägerMonkey je radio veoma drugačije od ostalih kompajlera iz svoje klase: dok su tipični kompajleri radili tako što su konstruisali i optimizovali graf kontrole toka predstavljajući funkciju, JägerMonkey je funkcionisao tako što je linearno prolazio kroz SpiderMonkey bytecode,reprezentaciju unutrašnje funkcije.</s><s>Iako ovo zabranjuje optimizaciju koja zahteva ponovno sortiranje instrukcija, JägerMonkey kompajliranje je u prednosti jer je veoma brzo, što je korisno za JavaScript pošto je rekompajliranje često zbog promena tipova promenljivih.</s>

<s>Mozilla je implementirala veliki broj kritičnih optimizacija u JägerMonkey, najvažniji su polimorfni redni kešs i zaključivanje tipova.</s>

<s>Razlike između TraceMonkey i JägerMonkey JIT tehnika i potreba za obema su objašnjene u a hacks.mozilla.org article.</s><s>Detaljno objašnjenje tehničkih detalja je naveo Chris Leary, jedan od kreatora SpiderMonkey-a, in a blog post .</s><s>Više tehničkih informacija se može naći na blogovima drugih divelopera: dvander, dmandelin .</s>

<s>Standardi
SpiderMonkey implementira ECMA-262 verziju 5.1 (ECMAScript) i još nekoliko dodatih mogućnosti.</s><s>ECMA-357 (ECMAScript for XML (E4X)) je pojavio na početku 2013 .</s>

<s>Iako se SpiderMonkey koristi u Firefox-u, on ne omogućava host okruženje kao Document Object Model (DOM).</s><s>U Mozilla projektima koji podržavaju DOM, Gecko omogućava host okruženje.</s>

<s>Internali
SpiderMonkey je napisan u C/C++ i sadrži interpreter, IonMonkey JIT kompajler, i sakupljače smeća.</s>

<s>IonMonkey
IonMonkey je naziv Mozilinog trenutnog JavaScript JIT kompajlera, koji ima za cilj da omogući mnogo novih optimizacija koje su bile nemoguće u JägerMonkey arhitekturi.</s>

<s>IonMonkey je tradicionalniji: prevodi SpiderMonkey bytecode ugraf kontrole toka, koristeći static single assignment form (SSA) za naprednu reprezentaciju.</s><s>Ova arhitektura omogućava da dobro poznate optimizacije iz drugih programskih jezika budu korišćene u JavaScript-u, uključujući specijalizaciju tipa, inlajning funkcije, linearno skeniranje alokaciju registara, eliminaciju mrtvog koda, i kretanje koda invarijante petlje.</s>

<s>Kompajler može da brzo emituje translaciju izvornog koda JavaScript funkcija ne ARM, x86, i x86-64 platformama.</s><s>On je standardan endžin od Firefox 18.</s>

<s>OdinMonkey
OdinMonkey je ime Mozilinog novog modula optimizaije za asm.js, lako-kompajlirajući podset JavaScript-a.</s><s>OdinMonkey sam po sebi nije JIT kompajler, on koristi trenutni JIT kompajler.</s><s>Sastavni je deo Firefox-a od verzije 22.</s>

<s>Upotreba
SpiderMonkey treba da bude ugrađen u drugim aplikacijama koje pružaju host okruženja za JavaScript.</s><s>Sledi nepotpuna lista:
 Mozilla Firefox, Thunderbird, SeaMonkey, i ostale aplikacije koje koriste Mozilla application framework
 Adobe Acrobat i Adobe Reader, Adobe Flash Professional, i Adobe Dreamweaver
 GNOME desktop okruženje, verzija 3 pa nadalje
 Yahoo!</s><s>Widgets, prvobitno nazvan Konfabulator
 UOX3, Ultima Online server emulator
 Paket aplikacija prvenstveno namenjen da pomogne u dizajniranju role-playing game-ova.</s><s>Methabot veb kroler koristi SpiderMonkey u povezanim okruženjeima za pokretanje korisničkih tipova fajlova i URL parsera
 Takođe se koristi u CouchDB sistemu baza podataka napisanom u Erlang - JavaScript se koristi za definisanje mapa, filtere, redukovanje finkcija i pregled podataka na priper u HTML formatu
 FreeSWITCH, open-source telephony engine, koristi SpiderMonkey da obogući korisnicima da pišu skripte za call management u JavaScript-u
 SPOT SIP Engine
 ELinks, pretraživač veba baziran na tekstu, koristi SpiderMonkey da omogući JavaScript
 Delovi SpiderMonkey-a se koriste u Wine projektima Jscript (re-)implementacija
 SpiderMonkey se takođe koristi u mnogim open-source projektima, pogledaj https://developer.mozilla.org/en/SpiderMonkey/FOSS 
 Riak koristi SpiderMonkey kao runtime za JavaScript MapReduce operacije
 Synchronet, BBS, e-mail, Web, i aplikativni server koristi SpiderMonkey endžin
 JavaScript OSA, SpiderMonkey inter-process communication jezik zaMacintosh računar
 0 A.D., strategijska igrica
 SAP HANA Application Services, za kreiranje poslovne logike na HANA engine/app serveru</s>

<s>SpiderMonkey sadrži JavaScript Shell interaktivni JavaScript za razvoj i za pozivanje komandne linije JavaScript programskih fajlova.</s>

<s>Nekoliko velikih organizacija koristi SpiderMonkey da upravlja njihovim JavaScript-om za front-end aplikacije.</s>

<s>Reference</s>

<s>Spoljašnje veze
 , SpiderMonkey (JavaScript-C) engine
 Documentation for SpiderMonkey 
 Spidermonkey's page for Open Source Links 
 Are We Fast Yet? (Official benchmark and comparison)</s>

<s>Višeplatformski softver</s>

