SpiderMonkey (Motor von JavaScript)

SpiderMonkey ist der Deckname für den allerersten Motor von JavaScript, der von Brendan Eich bei Netscape Kommunikationen später geschrieben ist, veröffentlicht als offene Quelle und jetzt aufrechterhalten durch das Mozilla Fundament. SpiderMonkey stellt zurzeit Unterstützung von JavaScript für Mozilla Firefox und verschiedenen embeddings wie der ZWERG 3 Arbeitsfläche zur Verfügung.

Geschichte

Eich "hat JavaScript in zehn Tagen" 1995, geschrieben

zu Netscape mit der Versprechung " rekrutiert, "Schema" im Browser zu tun".

(Die Idee, Schema zu verwenden, wurde aufgegeben, als "Technikmanagement [entschieden] hat, dass die Sprache wie Java' 'aussehen muss".)

Im Fall 1996 ist Eich, müssend [die] wesentliche technische Schuld "auszahlen" vom ersten Jahr abgereist, "ist seit zwei Wochen zu Hause geblieben, um Mokka als der codebase umzuschreiben, der bekannt als SpiderMonkey geworden ist". Der Name SpiderMonkey wurde als eine Verweisung auf den Film Beavis und Kolben-Kopf gewählt, Tut Amerika, in dem der Charakter Tom Anderson erwähnt, dass die Titelcharaktere von ähnlichen einigen Klammeraffen "schlugen."

2011 hat Eich Management, genanntes Eigentumsrecht vom Code von SpiderMonkey Dave Mandelin übertragen.

Standards

SpiderMonkey führt ECMA-262 Ausgabe 5 (ECMAScript), zusammen mit ECMA-357 (ECMAScript für XML (E4X)) und mehrere Komfortmerkmale durch.

Wenn auch SpiderMonkey in Firefox verwendet wird, stellt er Gastgeber-Umgebungen wie Document Object Model (DOM) nicht zur Verfügung.

Internals

SpiderMonkey wird in C ++ geschrieben und enthält einen Dolmetscher, mehrere JIT Bearbeiter (TraceMonkey, JägerMonkey und IonMonkey), ein Dekompilierer und ein Müllmann.

TraceMonkey

TraceMonkey ist der erste JIT für die Sprache von JavaScript geschriebene Bearbeiter. Der Bearbeiter wurde zuerst als ein Teil von SpiderMonkey in Firefox 3.5 veröffentlicht, "Leistungsverbesserungen zur Verfügung stellend, die sich zwischen 20 und 40mal schneller erstrecken" als der Grundlinie-Dolmetscher in Firefox 3.

Anstatt ganze Funktionen zu kompilieren, ist TraceMonkey eine Nachforschung JIT, der durch die Aufnahme des Kontrollflusses und der Datentypen während der Dolmetscher-Ausführung funktioniert. Das Daten informiert dann den Aufbau von Spur-Bäumen, die hoch spezialisierten Pfade des heimischen Codes.

TraceMonkey ist obsoleted durch Verbesserungen zu JägerMonkey besonders durch die Entwicklung des Typ-Interferenzmotors SpiderMonkey gewesen. TraceMonkey fehlt von SpiderMonkey von Firefox 11 vorwärts.

JägerMonkey

JägerMonkey, innerlich genannter MethodJIT, ist eine ganze Methode JIT Bearbeiter hat vorgehabt, Leistung in Fällen zu verbessern, wo TraceMonkey stabilen heimischen Code nicht erzeugen kann. Es wurde zuerst in Firefox 4 veröffentlicht und hat TraceMonkey seitdem völlig verdrängt.

JägerMonkey funktioniert sehr verschieden von anderen Bearbeitern in seiner Klasse: Während typische Bearbeiter-Arbeit durch das Konstruieren und die Optimierung eines Kontrollfluss-Graphen, der die Funktion vertritt, JägerMonkey stattdessen durch das Wiederholen linear vorwärts durch SpiderMonkey bytecode, die innere Funktionsdarstellung funktioniert. Obwohl das Optimierungen verbietet, die Instruktionsumstellung verlangen, ist das Kompilieren von JägerMonkey im Vorteil, sehr schnell zu sein, der für JavaScript seit dem Wiederkompilieren wegen des Änderns variabler Typen nützlich ist, ist häufig.

Mozilla hat mehrere kritische Optimierungen in JägerMonkey, am wichtigsten polymorphe geheime Reihenlager und Typ-Schlussfolgerung durchgeführt.

Der Unterschied zwischen TraceMonkey und JägerMonkey JIT Techniken und das Bedürfnis nach beiden wurde in einem Artikel hacks.mozilla.org erklärt. Eine mehr eingehende Erklärung der technischen Details wurde von Chris Leary, einem von Entwicklern von SpiderMonkey in einem Blog-Posten zur Verfügung gestellt. Mehr technische Information kann im blogs anderen Entwicklers gefunden werden: dvander, dmandelin.

IonMonkey

IonMonkey ist der Name von zukünftigem JavaScript von Mozilla JIT Bearbeiter, der zum Ziel hat, viele neue Optimierungen zu ermöglichen, die mit der vorherigen Architektur von JägerMonkey unmöglich waren.

IonMonkey ist ein traditionellerer Bearbeiter: Es übersetzt SpiderMonkey bytecode in einen Kontrollfluss-Graphen, mit der statischen einzelnen Anweisungsform (SSA) für die Zwischendarstellung. Diese Architektur ermöglicht wohl bekannten Optimierungen aus anderen Programmiersprachen, für JavaScript, einschließlich der Typ-Spezialisierung, Funktion inlining, Register-Zuteilung des geradlinigen Ansehens, tote Codebeseitigung und Codebewegung der Schleife-invariant verwendet zu werden.

Der Bearbeiter kann schnelle heimische Codeübersetzungen von Funktionen von JavaScript auf dem ARM, x86, und x86-64 Plattformen ausstrahlen.

Verwenden

SpiderMonkey ist beabsichtigt, um in anderen Anwendungen eingebettet zu werden, die Gastgeber-Umgebungen für JavaScript zur Verfügung stellen. Eine unvollständige Liste folgt:

  • Mozilla Firefox, Thunderbird, SeaMonkey und andere Anwendungen, die das Anwendungsfachwerk von Mozilla verwenden
  • Adobe Acrobat und Adobe Reader, Adobe Flash Professional und Adobe Dreamweaver
  • ZWERG-Tischumgebung, Version 3 und später
  • Yahoo! Produkte, früher genannter Konfabulator
  • UOX3, ein Server-Emulator von Ultima Online
  • Das Bereich-Gefolge von Anwendungen hat in erster Linie vorgehabt, im Entwerfen von Rolle spielenden Spielen zu helfen.
  • Der Methabot Webkriecher verwendet SpiderMonkey in einer Mehrgewindeumgebung, um von den Benutzern vorausgesetzt dass filetype und URL-ADRESSE parsers zu führen
  • Es wird auch im Datenbanksystem von CouchDB verwendet, das in Erlang geschrieben ist - JavaScript wird verwendet, um Karten, Filter zu definieren, reduzieren Sie Funktionen, und Betrachtungsdaten zum Beispiel im HTML formatieren
  • MongoDB, ein anderes Datenbanksystem von NoSQL verwendet SpiderMonkey für die Server-Seite Ausführung von JavaScript
  • FreeSWITCH, Telefonie-Motor der offenen Quelle, verwendet SpiderMonkey, um Benutzer mit der Fähigkeit zu versorgen, Anruf-Verwaltungsschriften in JavaScript zu schreiben
  • WERDEN SIE FLECKIG NIPPEN an Motor, ein standardbasiertes kommerzielles Computertelefonie-Produkt
  • ELinks, ein textbasierter WWW-Browser, verwendet SpiderMonkey, um JavaScript zu unterstützen
  • Teile von SpiderMonkey werden im Wein-Projekt Jscript (wieder-) Durchführung verwendet
  • SpiderMonkey wird auch in vielen anderen Projekten der offenen Quelle verwendet, sieh
https://developer.mozilla.org/en/SpiderMonkey/FOSS
  • Riak verwendet SpiderMonkey als die Durchlaufzeit für Javascript Operationen von MapReduce
  • Synchronet, ein BBS, E-Mail, Web und Anwendungsserver mit dem Motor von SpiderMonkey
  • JavaScript OSA, SpiderMonkey zwischenbearbeitet Nachrichtensprache für den Computer von Macintosh
  • 0 n. Chr., ein Echtzeitstrategie-Spiel

SpiderMonkey schließt JavaScript Shell für die interaktive Entwicklung von JavaScript und für die Beschwörung der Befehl-Linie von Programm-Dateien von JavaScript ein.

Mehrere große Organisationen verwenden SpiderMonkey, um ihren JavaScript für Vorderende-Anwendungen zu führen.

Siehe auch

  • Kies (Motor von JavaScript)
  • Liste von ECMAScript Motoren

Links


John D. Sloat / Quant-Unbegrenztheit
Impressum & Datenschutz