SpiderMonkey (SpiderMonkey)

Перейти к навигации Перейти к поиску
SpiderMonkey
Логотип программы SpiderMonkey
Тип Движок JavaScript
Автор Брендан Эйх
Разработчики Mozilla Foundation/Mozilla Corporation
Написана на C++, Си
Операционные системы Unix-подобная операционная система и Windows
Аппаратная платформа Кроссплатформенное программное обеспечение
Последняя версия 128.0 (16 июля 2024 года)
Тестовая версия
Репозиторий hg.mozilla.org/mozilla-c…
github.com/mozilla/gecko…
Лицензия MPL/GPL/LGPL
Сайт spidermonkey.dev
Логотип Викисклада Медиафайлы на Викискладе

SpiderMonkey — движок JavaScript с открытым исходным кодом, разрабатываемый Mozilla Foundation. Используется в браузере Mozilla Firefox. Первый в истории движок JavaScript[2].

SpiderMonkey был написан Бренданом Эйхом во время его работы в Netscape Communications, а позднее сделан открытым. В настоящее время SpiderMonkey поддерживается Mozilla Foundation.

История версий SpiderMonkey
Версия Дата выпуска Соответствующая версия ECMAScript Версия браузера Добавленная функциональность
Старая версия, не поддерживается: 1.0 март 1996 Netscape Navigator 2.0
Старая версия, не поддерживается: 1.1 август 1996 Netscape Navigator 3.0
Старая версия, не поддерживается: 1.2 июнь 1997 Netscape Navigator 4.0 — 4.05
Старая версия, не поддерживается: 1.3 октябрь 1998 ECMA-262 1st + 2nd edition Netscape Navigator 4.06-4.7x
Старая версия, не поддерживается: 1.4 Netscape Server
Старая версия, не поддерживается: 1.5 ноябрь 2000 ECMA-262 3rd edition Netscape Navigator 6, Firefox 1.0
Старая версия, не поддерживается: 1.6 ноябрь 2005[3] Firefox 1.5 дополнительные методы массива, дженерики массивов и строк, ECMAScript для XML (E4X)
Старая версия, не поддерживается: 1.7 октябрь 2006 Firefox 2.0 итераторы и генераторы, оператор let, array comprehensions, деструктурирующее присваивание
Старая версия, не поддерживается: 1.8 июнь 2008 Firefox 3.0 выражения-генераторы, замыкания выражений
Старая версия, не поддерживается: 1.8.5 март 2011 ECMA-262 5th edition Firefox 4.0 поддержка JSON
Старая версия, не поддерживается: 1.8.8 январь 2012 Firefox 10.0
Старая версия, не поддерживается: 17 ноябрь 2012 Firefox 17.0
Старая версия, не поддерживается: 24 сентябрь 2013 Firefox 24.0
Старая версия, не поддерживается: 31 июль 2014 Firefox 31.0
Старая версия, не поддерживается: 38 май 2015 Firefox 38.0
Старая версия, не поддерживается: 45 март 2016 Firefox 45.0
Старая версия, не поддерживается: 52 март 2017 Firefox 52.0
Старая версия, не поддерживается: 60 май 2018 Firefox 60.0
Старая версия, не поддерживается: 68 июль 2019 Firefox 68.0
Старая версия, не поддерживается: 78 июнь 2020 Firefox 78.0
Старая версия, не поддерживается: 91 август 2021 Firefox 91.0
Старая версия, не поддерживается: 102 июнь 2022 Firefox 102.0
Старая версия, не поддерживается: 103 июль 2022 Firefox 103.0
Текущая версия: 128 июль 2024 Firefox 128.0

SpiderMonkey написан на языке Си и включает в себя компилятор, интерпретатор, декомпилятор, сборщик мусора и стандартные классы. Он не предоставляет рабочего окружения, такого как DOM.

SpiderMonkey встраивается в другие приложения, которые предоставляют рабочее окружение для JavaScript. Наиболее популярными программами являются Mozilla Firefox и Mozilla Application Suite/SeaMonkey, а также Adobe Acrobat. SpiderMonkey также используется в качестве движка JavaScript для Yahoo! Widgets (ранее известного под именем «Konfabulator») и UOX3, эмулятора Ultima Online.

SpiderMonkey, как и родственный ему движок Rhino, имеет поддержку стандарта ECMAScript для XML (E4X).

В 2006 году для Mozilla 2 планировалось использовать Tamarin[4] — открытую виртуальную машину ActionScript, разработанную в Macromedia (позже Adobe)[5]. Проект по интеграции SpiderMonkey и Tamarin получил кодовое название ActionMonkey. Позднее этот проект был отменен в силу ряда причин[6].

В 2009 году к SpiderMonkey добавлена возможность компиляции JavaScript в машинный код, что существенно ускорило выполнение JavaScript-кода. Проект получил название TraceMonkey.

Браузер Firefox, начиная с версии 3.5, для исполнения JavaScript-кода использует по умолчанию TraceMonkey[7].

Для того, чтобы достичь производительности, сравнимой с другими движками, в 2010 году к SpiderMonkey было решено добавить JIT-компиляцию, основанную на компиляции целого метода (англ. method-based JIT)[8]. Проект получил название JaegerMonkey (JägerMonkey).

Браузер Firefox использует JägerMonkey начиная с версии 4.0.

Новая версия разрабатывается в Mozilla Foundation[9].

Браузер Firefox использует IonMonkey начиная с версии 18.0.

Несмотря на то, что IonMonkey ещё не до конца реализован, частично внедрён в Nightly 23, Mozilla Foundation приступили к созданию следующей версии — OdinMonkey[10].

Примечания

[править | править код]
  1. https://hg.mozilla.org/releases/mozilla-esr52/rev/FIREFOX_52_7_2esr_RELEASE
  2. Андрей Никифиров. Как работает JavaScript: часть первая. GeekBrains (23 октября 2017). Дата обращения: 14 октября 2024.
  3. New in JavaScript 1.6. Дата обращения: 28 июля 2015. Архивировано из оригинала 5 сентября 2015 года.
  4. Tamarin Project Архивировано 10 февраля 2007 года.
  5. Официальное объявление о начале интеграции SpiderMonkey с Tamarin Архивировано 27 апреля 2007 года.
  6. ActionMonkey на wiki.mozilla.org. Дата обращения: 5 декабря 2009. Архивировано 28 января 2012 года.
  7. TraceMonkey на wiki.mozilla.org. Дата обращения: 5 декабря 2009. Архивировано 3 января 2012 года.
  8. JaegerMonkey на wiki.mozilla.org. Дата обращения: 15 марта 2011. Архивировано 23 августа 2013 года.
  9. IonMonkey на wiki.mozilla.org. Дата обращения: 8 апреля 2012. Архивировано 11 мая 2012 года.
  10. OdinMonkey на wiki.mozilla.org. Дата обращения: 27 апреля 2013. Архивировано 22 июля 2013 года.