Список движков ECMAScript
![]() | В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Механизм ECMAScript — это программа, выполняющая исходный код, написанный на версии стандарта языка ECMAScript , например, JavaScript .
Механизмы JIT-компиляции
[ редактировать ]Это механизмы ECMAScript нового поколения для веб-браузеров, все из которых реализуют JIT- компиляцию или варианты этой идеи. Преимущества в производительности при JIT-компиляции делают ее более подходящей для веб-приложений, написанных на JavaScript .
- Каракан : движок JavaScript, разработанный Opera Software ASA , включенный в 10.50 версию веб-браузера Opera до перехода на V8 с Opera 15 (выпущенной в 2013 году). [1] [2] [3]
- Chakra (JScript9) : механизм JScript , используемый в Internet Explorer . Впервые он был представлен на выставке MIX 10 в рамках предварительной версии платформы Internet Explorer 9. [4]
- Chakra : движок JavaScript , ранее использовавшийся в более старых версиях Microsoft Edge , а затем был заменен V8. [5]
- SpiderMonkey : движок JavaScript в приложениях Mozilla Gecko , включая Firefox . В настоящее время движок включает в себя компилятор IonMonkey и модуль оптимизации OdinMonkey, ранее в его состав входили компилятор TraceMonkey (первый JIT-компилятор JavaScript) и JägerMonkey.
- JavaScriptCore : интерпретатор JavaScript и JIT, первоначально созданный на основе KJS . Он используется в проекте WebKit и таких приложениях, как Safari . Также известен как Nitro, SquirrelFish и SquirrelFish Extreme. [6]
- JScript .NET : .NET Framework, механизм JScript используемый в ASP.NET, на основе Common Language Runtime и COM Interop . Поддержка была прекращена в .NET Core и CoreCLR, поэтому ее будущее для ASP.NET Core выглядит сомнительным .
- Tamarin : движок ActionScript и ECMAScript, используемый в Adobe Flash .
- V8 : движок JavaScript, используемый в Google Chrome и других Chromium браузерах на базе , Node.js , Deno и V8.NET.
- GNU Guile включает интерпретатор ECMAScript начиная с версии 1.9.
- Nashorn : движок JavaScript, используемый в Oracle Java Development Kit (JDK) начиная с версии 8. [7]
- iv, ECMAScript Lexer/Parser/Interpreter/VM/JIT-метод, написанный на C++. [8]
- CL-JavaScript: может компилировать JavaScript в машинный язык в реализациях Common Lisp, которые компилируются в машинный язык. [9]
- БЕСЕН: Полная JIT-компиляция реализации ECMAScript пятого издания, написанная на Object Pascal. [10]
- Hermes: разработан Facebook для React Native . мобильных приложений [11] Также может использоваться независимо от React Native.
- Graal.js: совместимый с ECMAScript механизм JavaScript для GraalVM , который поддерживает взаимодействие языков и может также выполнять приложения Node.js.
Механизмы интерпретатора времени выполнения
[ редактировать ]Следующие движки используют интерпретаторы времени выполнения, которые не компилируются в собственный машинный код и обычно работают медленнее:
- Continuum: самоинтерпретатор , поддерживающий старые версии спецификации ECMAScript 2015. [12] Уникально то, что движок реализован в ECMAScript 3, что позволяет запускать ES2015 в таких старых браузерах, как IE6. [13]
- Футарк : движок ECMAScript веб-браузера Opera версий с 9.50 по 10.10.
- InScript : устаревшая проприетарная библиотека, используемая в iCab 2 и 3.
- JScript : движок, который используется в Internet Explorer для версий до IE9, и один из компонентов MSHTML (Trident) движка браузера .
- Jint: интерпретатор Javascript со встроенным движком для .NET.
- KJS : движок, используемый в Konqueror , и один из компонентов KHTML , предшественника JavaScriptCore.
- Линейное письмо B : движок ECMAScript веб-браузера Opera версий 7.0–9.50, эксклюзивно.
- Нарцисс: JavaScript, реализованный в JavaScript ( метациклический оценщик ), предназначенный для работы в другом движке JavaScript, только теоретического и образовательного характера.
- JS-Interpreter Легкий интерпретатор JavaScript, реализованный на JavaScript с пошаговым выполнением.
- QtScript : первоначально разработан компанией Trolltech, сейчас принадлежит The Qt Company . Он обеспечивает интеграцию QObject с JavaScriptCore.
- V4 (QJSEngine): новый движок Qt ECMAScript, лежащий в основе QML и QtQuick. Соответствует ES6 и находится в активной разработке в The Qt Company . V4 скомпилирован JIT. [14]
- Rhino : один из нескольких движков JavaScript от Mozilla , использующих платформу Java .
- YAJI: механизм ECMAScript, основанный на реализации FESI Жана-Марка Люгрина в 1999 году, использующий платформу Java , в настоящее время разрабатываемый для поддержки новейших стандартов (спецификация ECMAScript 262, v5.1). [15] [16] [17]
- Microvium: движок JavaScript для микроконтроллеров, поддерживающий ограниченное подмножество спецификации ECMAScript, использующий менее 16 КБ флэш-памяти и 64 КБ ОЗУ в режиме ожидания. [18]
- Duktape: небольшой, легко встраиваемый движок Ecmascript E5/E5.1. [19]
- XS JavaScript Engine: совместимый с ECMAScript 2020 движок для микроконтроллеров с ограниченными ресурсами. [20] [21] XS поддерживается компанией Moddable как часть Moddable SDK и ранее был частью платформы Kinoma . [22]
- Jsish: интерпретатор подмножества ES5.1 со встроенной поддержкой SQLite, JSON, WebSocket и ZVFS. [23]
- Espruino : Очень компактный интерпретатор, специально предназначенный для микроконтроллеров . Может работать менее чем в 8 КБ ОЗУ при выполнении из исходного кода (а не из байт-кода ).
- MuJS: легкая библиотека интерпретатора ECMAScript, предназначенная для встраивания в другое программное обеспечение с целью расширения его возможностей создания сценариев. Первоначально разработан для MuPDF . [24]
- mJS: ограниченный движок JavaScript. Используется для Интернета вещей (IoT).
- Tiny-JS: минимальный интерпретатор JavaScript, написанный на C++.
- JerryScript: легкий движок JavaScript от Samsung для микроконтроллеров с оперативной памятью менее 64 КБ.
- njs: легкий интерпретатор JavaScript, оптимизированный для написания сценариев веб-сервера и быстрого создания контекста виртуальной машины; используется в nginx . [25]
- QuickJS : облегченный интерпретатор ECMAScript 6, созданный Фабрисом Белларом и Чарли Гордоном.
- engine262: движок JavaScript, написанный на JavaScript для разработки и исследования. В основном он используется для проверки спецификации ECMAScript.
- Boa: JavaScript-движок, написанный на Rust . [26] [27]
- ScriptEase: старый запатентованный движок, последний раз обновлявшийся в 2003 году. Примечателен только тем, что использовался в космическом телескопе Джеймса Уэбба . [28]
- LibJS: JavaScript-движок проекта SerenityOS и Ladybird. [29] Первоначально это был интерпретатор AST, но затем он был модернизирован до интерпретатора на основе байт-кода. [30] В какой-то момент разработчик Андреас Клинг работал над его портированием на компиляцию Just-in-time , но позже передумал, [31] ссылаясь на проблемы разработки/отладки, а также говоря, что ему интересно посмотреть, насколько полезность и удобство использования движка могут зайти без него.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Каракан» . Архивировано из оригинала 31 мая 2009 г. Проверено 9 июля 2009 г.
- ^ «Блог команды Opera Desktop | Opera» . Архивировано из оригинала 3 марта 2006 г.
- ^ «Дев.Опера — Блог» . dev.opera.com .
- ^ Часто задаваемые вопросы , Microsoft , 13 марта 2010 г., заархивировано из оригинала 22 марта 2010 г. , получено 18 марта 2010 г.
- ^ «Нацеливание на Edge и устаревшие движки в API JsRT» . Проверено 10 сентября 2015 г.
- ^ «JavaScriptCore — WebKit» .
- ^ «Oracle Nashorn: JavaScript-движок нового поколения для JVM» .
- ^ «Созвездие/iv» . Гитхаб . Проверено 15 ноября 2015 г.
- ^ «CL-JavaScript» . Проверено 14 сентября 2018 г.
- ^ «Поддержи меня» . Гитхаб . 18 ноября 2021 г.
- ^ «Использование Гермеса» . Фейсбук . Проверено 9 апреля 2021 г.
- ^ «Спецификация языка ECMAScript 2015 – ECMA-262, 6-е издание» .
- ^ «Виртуальная машина ES6, встроенная в JavaScript» . Архивировано из оригинала 3 декабря 2012 г. Проверено 1 декабря 2012 г.
- ^ «V4 — Qt Wiki» . wiki.qt.io. Проверено 24 апреля 2021 г.
- ^ «Спецификация языка ECMAScript ECMA-262, версия 5.1» (PDF) . Экма Интернешнл. Июнь 2011 г. Архивировано из оригинала (PDF) 12 апреля 2015 г. Проверено 31 января 2012 г.
- ^ «YAJI: еще один интерпретатор JavaScript» . Гугл-код . Проверено 31 января 2012 г.
- ^ «ФЕСИ» . Сентябрь 2003 г. Архивировано из оригинала 6 сентября 2012 г. Проверено 6 августа 2012 г.
- ^ «Микровий очень маленький» . 11 июня 2022 г. Проверено 23 августа 2022 г.
- ^ «Дуктейп» . Проверено 21 сентября 2013 г.
- ^ «moddable/documentation/xs/XS Conformance.md в публичном доступе» . Гитхаб .
- ^ «Приложения для Интернета вещей» . Архивировано из оригинала 28 декабря 2018 г.
- ^ «Xs7 @ Tc-39» .
- ^ "Джишиш" . Проверено 30 апреля 2014 г.
- ^ «МЮС» . Проверено 22 сентября 2014 г.
- ^ «NGINX JavaScript в конфигурации вашего веб-сервера» . Ютуб . Архивировано из оригинала 13 декабря 2021 г. Проверено 30 октября 2018 г.
- ^ «Давайте создадим движок JavaScript» . 2019.jsconf.eu . Проверено 23 марта 2022 г.
- ^ «GitHub — boa-dev/boa: Boa — это встраиваемый экспериментальный движок Javascript, написанный на Rust» . github.com . Проверено 8 апреля 2022 г.
- ^ Кларк, Митчелл (18 августа 2022 г.). «Космический телескоп Джеймса Уэбба, судя по всему, использует JavaScript» . Грань . Проверено 2 сентября 2022 г.
- ^ «JavaScript-движок LibJS» . libjs.dev . Проверено 30 июня 2023 г.
- ^ «LibJS: Удалить интерпретатор AST :^) · LadybirdBrowser/ladybird@2eaa528» . Гитхаб . Проверено 10 июля 2024 г.
- ^ Обновление браузера Ladybird (февраль 2024 г.) , получено 18 апреля 2024 г.