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:
Комментарии (16)
alxpy
10.12.2015 18:56-4Как-то слабо верится про 90% поддержку ES2015. Это без полифилов?
kichik
10.12.2015 20:51+4Это вот этот публичный тест для измерения покрытия kangax.github.io/compat-table/es6
Да, без полифилов.
trikadin
10.12.2015 21:00+6Как JS-разработчик говорю — да. У Edge действительно самая большая поддержка текущего стандарта и немножко следующего. Более того — это вызывает у меня сильный интерес в плане того, чтобы опробовать Node.JS на Chakra. Потому что async functions нативно — это безумно круто.
slonopotamus
10.12.2015 19:57-7Какой фундаментальный недостаток уже существовавших на 2008-ой год JS-движков заставил вас делать свой?
kichik
10.12.2015 20:59+7А вы про какие движки? V8, только-только появившийся осенью 2008 вместе с Chrome, стратегию которого и, скажем, успех было трудно предсказать. Или SpiredMonkey, JIT-компиляцию JS-кода в котором в то время, насколько я понимаю, тоже только начинали разрабатывать?
ReklatsMasters
11.12.2015 00:28Как будто холодным душем обдали. Это что-то невероятное. Разрыв шаблона прямо.
Не нашёл инфы про модули (в таблице kangax.github.io/compat-table/es6). Поддерживаются?trikadin
11.12.2015 02:10+1Так стандарта законченного нету про модули — как их тут поддержишь. По сути, то, что есть, в текущий стандарт добавили только для того, чтобы все знали, на что ориентироваться в будущем. А пока нету подробной спецификации, как они должны соотноситься с файловой системой, с загрузкой из по http, какие ошибки должны выкидывать, если модуль не найден или что-нибудь ещё, пока нету спецификации по System (программная загрузка модулей) — единственное, что они могут — служить прослойкой над уже существующими системами модулей типа CommonJS. И ни в коем случае не надо, чтобы их поддержал кто-то из браузеров, запилив свою имплементацию — это наверняка приведёт к жуткому говнищу несовместимости в будущем. Надеюсь, microsoft сделали выводы и не попытаются сделать из edge второго осла.
Ну а на правах рекламы рекомендую почитать мою статью про модули :)
arestov
11.12.2015 14:46+2Уместно вспомнить про github.com/Microsoft/node
Форк node.js использующий в качестве движка Chakra вместо V8,
с полифилами для кода, заточенного под V8
NickKolok
11.12.2015 22:02-3Помнится, открыть исходники .NET тоже обещали. Напомните, в итоге открыли?
dordzhiev
11.12.2015 22:13Reference Source уже как несколько лет существует. Также есть .NET Core RC1.
aylarov
Это достаточно правильный шаг, будет интересно его посравнивать с V8 и Spidermonkey в ряде дисциплин