[Перевод] Исходный код JavaScript-движка Microsoft Edge будет открыт в январе

В конце прошлой недели на конференции JSConf US Last Call (Флорида, США) мы анонсировали, что откроем исходный код ключевых компонентов нашего JavaScript-движка Chakra, используемого в Microsoft Edge, в виде проекта ChakraCore. Исходный код будет доступен на GitHub под MIT лицензией в следующем месяце.

58a5e039ea3d7a5269442ea5c988c5d8.jpg
Gaurav Seth на сцене JSConf US Last Call анонсирует ChakraCore. Слайды доступны на GitHub.

Chakra — один с лучших движков JavaScript с самым большим покрытием возможностей ES2015 и предсказуемыми производительностью, надежностью и масштабируемостью. Мы предполагаем, что ChakraCore может использоваться в тех сценариях, где эти факторы играют большую роль: от облачных сервисов и до интернета вещей и в других средах.

Сегодня мы вкладываемся в улучшение Chakra больше, чем когда-либо, и мы рады возможности развития сотрудничества с сообществом для внедрения дальнейших улучшений. Несколько организаций уже рассказали о своем интересе вносить вклад в Chakra, включая Intel, AMD и NodeSource — мы смотрим с оптимизмом на нашу будущую совместную работу.

Chakra: современный движок JavaScript

В 2008 году мы с нуля создали новый движок JavaScript, названный кодовым именем Chakra. Один из фундаментальных принципов разработки заключался в том, чтобы быть уверенными, что Chakra будет обеспечивать уровень производительности, необходимый для современного веба, и сможет легко адаптироваться под новые сценарии в широком спектре используемого аппаратного обеспечения. Проще говоря, это означало, что Chakra должна была быстро стартовать, быстро работать, поддерживать отличный пользовательский опыт, реализуя при этом в полной мере потенциал используемого железа. Мы достигаем этих целей через уникальную многоступенчатую цепочку исполнения, включающую интерпретатор, многоуровневый фоновый JIT-компилятор и сборщик мусора, который может осуществлять параллельные и частичные очистки памяти.

2e574a860bc33e9abf269d3a2ee889d4.png
Многоступенчатая схема исполнения кода в Chakra и ChakraCore

С момента появления Chakra JavaScript вырос от языка, работающего преимущественного внутри веб-браузера, в технологию, позволяющую создавать приложения для магазинов, серверные приложения, облачные сервисы, NoSQL базы данных, игровые движки, инструменты для разработки и, — свежее веяние, — интернет вещей. Со временем Chakra эволюционировала, чтобы отображать многие из этих новых контекстов и была оптимизирована соответствующим образом. Это означает, что помимо исполнения кода, Chakra должна была поддерживать нативную переносимость, быть масштабируемой и уметь управлять потреблением ресурсов для выполнения кода в ограниченных условиях. Интерпретатор Chakra сыграл ключевую роль в легкости переноса технологии между разными платформенными архитектурами.

Сегодня помимо браузера Microsoft Edge движок Chakra также работает в универсальных Windows-приложениях во всех форм-факторах, которые поддерживает Windows — будь это Xbox, смартфон или традиционный ПК. Он лежит в основе таких сервисов, как Azure DocumentDB, Cortana и Outlook.com, используется в связке с (и оптимизирован для) TypeScript. А в рамках Windows 10 мы также сделали возможным запуск Node.js поверх Chakra, чтобы принести широкие возможности экосистемы Node.js на новую IoT-платформу: Windows 10 IoT Core.

С релизом Windows 10 летом этого года Chakra не только стала еще более быстрой для веба, но и более чем удвоила свои результаты в некоторых ключевых тестах измерения скорости JavaScript-движков, разработанных другими производителями браузеров.

09f8f7bf625601487e5dd16cd2843334.png
Производительность Chakra в тестах скорости JavaScript — Octane и Jetstream (Системная информация: 64-битные браузеры на Intel Core i5–34755 @ 2.90Ghz с 4.0GB RAM под Windows 10)

В дополнение, Chakra поддерживает большую часть возможностей ECMAScript 2015 (aka ES6) и некоторые возможности из будущей версии ECMAScript, например, Async Functions и SIMD. Мы добавили поддержку asm.js и также участвуем в разработке WebAssembly и связанной инфраструктуры.

21b062cd989ea9d54c824c370b9768cb.png
Chakra поддерживает большую часть возможностей ES6 (Kangax ES6 Compatibility Table)

Таким образом, с 2008 года Chakra постепенно эволюционировала, чтобы стать отличным выбором для веба, облачных сервисов и интернета вещей. С сегодняшним анонсом мы делаем следующий шаг, предлагая разработчикам полностью поддерживаемый JavaScript-движок с открытым кодом, который вы можете внедрять в свои проекты, делать что-то поверх него и предлагать свои изменения назад в ChakraCore.

Что такое ChakraCore?


ChakraCore — это полноценная и самодостаточная виртуальная машина JavaScript, которая может быть встроена в производные проекты и поддерживать приложения, требующие использования скриптов, например, NoSQL базы данных, приложения для продуктивности и игровые движки. ChakraCore может использоваться для расширения возможностей JavaScript на сервере с связке с Node.js и облачными сервисами. Он включает все, что необходимо для разбора, интерпретации, компиляции и выполнения JavaScript кода без каких-либо зависимостей от других компонентов Microsoft Edge.

ChakraCore включает тот же набор возможностей, что и Chakra в Microsoft Edge с двумя ключевыми отличиями. Во-первых, он не выставляет приватные API для связывания с браузером или универсальной платформой Windows (UWP), что является весьма специфичным сценарием. И во-вторых, вместо предоставления основанного на COM диагностического API, используемого сейчас в Chakra, ChakraCore будет поддерживать новый набор современных API для диагностики, независящих от платформы, которые, в принципе, могут быть стандартизированы или сделаны совместимыми между различными реализациями в долгосрочной перспективе. По мере реализации этого нового набора API мы также планируем добавить их в Chakra.

95a024e22e7c8a2e5f5b676d2ad6b555.png
Устройство Chakra и ChakraCore

Следующие шаги в развитии ChakraCore


Любой современный движок JavaScript должен рассматриваться в более широком контексте, чем просто браузерные сценарии, включая все: от небольших устройств для IoT-приложений до огромных решений с распараллеленными серверными приложениями, базирующимися на облачных технологиях.

ChakraCore был спроектирован с тем, чтобы подходить под любой стек приложений, требующий быстрого, масштабируемого и легковесного движка. Мы планируем со временем сделать его еще более гибким: как в рамках Windows-экосистемы, так и за ее пределами. Хотя изначальный январский релиз будет нацелен только на Windows, мы можем подтвердить намерение перенести в будущем ChakraCore также и на другие платформы. Мы приглашаем разработчиков помочь нам в реализации этого стремления: вы можете просто дать нам знать, на какой платформе вы бы хотели видеть поддержку ChakraCore, чтобы мы могли приоретизировать свои ресурсы и инвестиции, или даже помочь с портированием на интересующую вас платформу.

Как внести вклад в ChakraCore


Начиная с января, мы откроем наш публичный репозиторий на GitHub для сообщества. К этому времени мы поделимся дополнительными подробностями о наших начальных приоритетах в разработке и руководствами по работе с проектом и внесению изменений. Сообщество — это сердце любого проекта с открытым кодом, поэтому мы будем рады клонам репозитория, исследованиям кода, новым сборкам и вашему вкладу во всем: от новой функциональности до тестов и исправлений ошибок. Мы также будем рады советам о том, как улучшить ChakraCore в конкретных сценариях, критичных для вашего бизнеса.

Мы хотим сделать Microsoft Edge и связанную с ним экосистему примером совместной инновации, совместимости и роста продуктивности в разработке. Это намерение уже привело к созданию нового сайта Microsoft Edge Dev, публичной публикации статуса платформы и использованию User Voice для упрощения диалога между командой Microsoft Edge и сообществом. Открытие кода ChakraCore — это естественное продолжение данных усилий и вдохновлено теми жи принципами открытости и прозрачности.

Данная отсчетная точка наступит уже скоро и мы надеемся, что открытый процесс разработки позволит нам плотнее сотрудничать с разработчиками по всему миру, что в свою очередь позволит создавать еще более качественные продукты для всех. Любые вопросы про Edge вы всегда можете задавать в нашем твиттере @MSEdgeDev. Ждите анонсов после новогодних праздников!

— Gaurav Seth, Principal PM Manager
— Adalberto Foresti, Principal Program Manager

Бонус


Кристиан Хейлманн (Christian Heilmann) записал интерью с Гауравом Сетом (Gaurav Seth) на тему развития JavaScript, Chakra и ChakraCore:

© Habrahabr.ru