SpiderMonkey

редактировать
Механизм JavaScript, поддерживаемый Mozilla Foundation

SpiderMonkey
Разработчик (и) Mozilla Foundation. Mozilla Corporation
Репозиторий Измените это на Wikidata
Написано наC, C ++
Операционная система Кроссплатформенность
Платформа IA-32, x86-64, ARM, MIPS, SPARC
Тип движок JavaScript
Лицензия MPL 2.0
Веб-сайтspidermonkey.dev

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

Содержание

  • 1 История
    • 1.1 Версии
  • 2 Стандарты
  • 3 Внутреннее устройство
    • 3.1 TraceMonkey
    • 3.2 JägerMonkey
    • 3.3 IonMonkey
    • 3.4 OdinMonkey
  • 4 Использование
  • 5 См. Также
  • 6 Ссылки
  • 7 Внешние ссылки

История

Эйх «написал JavaScript за десять дней» в 1995 году, будучи «завербованным в Netscape с обещанием« выполнить Scheme »в браузере». (От идеи использования Scheme отказались, когда «инженерное руководство [решило], что язык должен« выглядеть как Java »».) В конце 1996 года Эйху понадобилось «выплатить [] существенный технический долг "ушел с первого года", остался дома на две недели, чтобы переписать Mocha как кодовую базу, которая стала известна как SpiderMonkey ". (Mocha было первоначальным рабочим названием языка.) В 2011 году Eich передал управление кодом SpiderMonkey Дэйву Манделину.

Версии

История версий 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 1-е + 2-е изданиеNetscape Navigator 4.06-4.7x
Старая версия, больше не поддерживается: 1.4Netscape Server
Старая версия, больше не поддерживается: 1.5ноябрь 2000 г.ECMA-262 3-е изданиеNetscape Navigator 6, Firefox 1.0
Старая версия, больше не поддерживается: 1.62 ноября 005Firefox 1.5дополнительные методы массива, универсальные массивы и строки, E4X
Старая версия, больше не поддерживается: 1.7октябрь 2006 г.Firefox 2.0итераторы и генераторы, оператор let, понимание массивов, назначение деструктуризации
Старая версия, больше не поддерживается: 1.8июнь 2008 г.Firefox 3.0выражения генератора, закрытие выражений
Старая версия, больше не поддерживается: 1.8.5Март 2011 г.ECMA-262 5-е издание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май 2015Firefox 38.0
Старая версия, больше не поддерживается: 45март 2016Firefox 45.0
Текущая стабильная версия: 52март 2017 г.Firefox 52.0

Стандарты

SpiderMonkey реализует спецификацию ECMA-262 (ECMAScript ). ECMA-357 (ECMAScript для XML (E4X)) был удален в начале 2013 года.

Internals

SpiderMonkey написан на C /C ++ и содержит интерпретатор, IonMonkey JIT-компилятор и сборщик мусора.

TraceMonkey

TraceMonkey был первым JIT-компилятором, написанным для языка JavaScript. Первоначально представленный в качестве опции в бета-версии и представленный в блоге Брендана Эйха 23 августа 2008 г., компилятор стал частью основной версии как часть SpiderMonkey в Firefox 3.5, обеспечивая «повышение производительности в диапазоне от 20 и в 40 раз быстрее », чем интерпретатор базовой линии в Firefox 3.

Вместо компиляции целых функций TraceMonkey был трассирующей JIT, которая работает путем записи потока управления и типы данных во время выполнения интерпретатора. Эти данные затем послужили основой для построения Trace Trees, узкоспециализированных путей нативного кода.

. Улучшения JägerMonkey в конечном итоге сделали TraceMonkey устаревшим, особенно с разработкой вывода типа SpiderMonkey двигатель. TraceMonkey отсутствует в SpiderMonkey начиная с Firefox 11.

JägerMonkey

JägerMonkey, внутреннее имя MethodJIT, был JIT-компилятором всего метода, разработанным для повышения производительности в случаях, когда TraceMonkey не мог сгенерировать стабильный собственный код. Впервые он был выпущен в Firefox 4 и в конечном итоге полностью вытеснил TraceMonkey. Сам он был заменен на IonMonkey.

JägerMonkey работал совсем иначе, чем другие компиляторы в своем классе: в то время как типичные компиляторы работали, создавая и оптимизируя граф потока управления, представляющий функцию, JägerMonkey вместо этого действовал путем линейного итерации вперед через SpiderMonkey байт-код, внутреннее представление функции. Хотя это запрещает оптимизацию, требующую переупорядочения инструкций, компиляция JägerMonkey имеет преимущество в том, что она очень быстрая, что полезно для JavaScript, поскольку повторная компиляция из-за изменения типов переменных является частой.

Mozilla реализовала ряд критических оптимизаций в JägerMonkey, самое главное: полиморфные встроенные кеши и вывод типа.

Разница между методами JIT TraceMonkey и JägerMonkey, и необходимость в обоих была объяснено в статье на hacks.mozilla.org. Более подробное объяснение технических деталей было предоставлено Крисом Лири, одним из разработчиков SpiderMonkey, в сообщении блога. Более подробную техническую информацию можно найти в блогах других разработчиков: dvander, dmandelin.

IonMonkey

IonMonkey - это название текущего JIT-компилятора JavaScript Mozilla, цель которого - включить много новых оптимизации, которые были невозможны с предыдущей архитектурой JägerMonkey.

IonMonkey - более традиционный компилятор: он переводит SpiderMonkey байт-код в граф потока управления, используя static форма единого присвоения (SSA) для промежуточного представления. Эта архитектура позволяет использовать хорошо известные оптимизации из других языков программирования для JavaScript, включая специализацию типов, встраивание функций, линейное сканирование распределение регистров, устранение мертвого кода и перемещение кода без цикла.

Компилятор может генерировать быстрые машинные переводы функций JavaScript на ARM, x86 и x86-64 платформы. Это движок по умолчанию, начиная с Firefox 18.

OdinMonkey

OdinMonkey - это название нового модуля оптимизации Mozilla для asm.js, легко компилируемого подмножества JavaScript. OdinMonkey сам по себе не является JIT-компилятором, он использует текущий JIT-компилятор. Он включен в Firefox, начиная с выпуска 22.

Использование

SpiderMonkey предназначен для встраивания в другие приложения, которые предоставляют среду хоста для JavaScript. Ниже приводится неполный список:

  • Mozilla Firefox, Thunderbird, SeaMonkey и другие приложения, использующие платформу приложений Mozilla
  • Приложения для хранения данных:
    • MongoDB перемещено из V8 в SpiderMonkey в версии 3.2
    • Riak использует SpiderMonkey в качестве среды выполнения для операций JavaScript MapReduce
    • CouchDB системы баз данных (написанной на Erlang ). JavaScript используется для определения карт, фильтров, функций сокращения и просмотра данных, например, в формате HTML.
  • Adobe Acrobat и Adobe Reader, Adobe Flash Professional и Adobe Dreamweaver. Adobe Acrobat DC использует Spidermonkey 24.2 с поддержкой прямого переноса ECMA-357.
  • GNOME среда рабочего стола, версия 3 и более поздние
  • Yahoo! Виджеты, ранее называвшиеся Konfabulator
  • FreeSWITCH, механизм телефонии с открытым исходным кодом, использует SpiderMonkey, чтобы предоставить пользователям возможность писать сценарии управления вызовами на JavaScript
  • Текстовые веб-браузеры ELinks и edbrowse используют SpiderMonkey для поддержки JavaScript
  • Части SpiderMonkey используются в JScript (пере) реализации
  • Synchronet <проекта Wine. 90>, BBS, электронная почта, Интернет и сервер приложений, использующий движок SpiderMonkey
  • JavaScript OSA, язык SpiderMonkey для межпроцессного взаимодействия для Macintosh компьютер
  • 0 AD, стратегическая игра в реальном времени
  • SpiderMonkey также используется во многих других проектах с открытым исходным кодом; внешний список поддерживается на сайте разработчика Mozilla.

SpiderMonkey включает в себя оболочку JavaScript для интерактивной разработки JavaScript и для вызова программных файлов JavaScript из командной строки.

См. также

  • Бесплатное программное обеспечение с открытым исходным кодом портал

Ссылки

Внешние ссылки

Последняя правка сделана 2021-06-09 02:44:11
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте