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