Доступен выпуск JavaScript-движка Duktape 2.2.0, ориентированного на встраивание в кодовую базу проектов на языке C/C++. Движок отличается компактным размером, высокой переносимостью и низким потреблением ресурсов. Исходные тексты движка написаны на языке Си и распространяются под лицензией MIT. Код Duktape занимает около 160 kB и потребляет всего 48kB ОЗУ, а в режиме низкого потребления памяти 26kB ОЗУ. Для интеграции Duktape в код на C/C++ достаточно добавить в проект файлы duktape.c и duktape.h, и использовать Duktape API для вызова функций на JavaScript из кода на C/C++ или наоборот. Для освобождения неиспользуемых объектов из памяти применяется сборщик мусора с финализатором, построенный на основе комбинации алгоритма подсчёта ссылок с алгоритмом пометок (Mark and Sweep). Обеспечивается полная совместимость со спецификациями Ecmascript 5.1 и частичная поддержка Ecmascript 2015 и 2016 (E6 и E7), в том числе поддержка объекта Proxy для виртуализации свойств, типизированные массивы, ArrayBuffer,
Спустя 11 месяцев после открытия кода Facebook представил первый стабильный релиз пакетного менеджера Yarn 1.0, предназначенного для управления зависимостями в проектах на языке JavaScript и вобравшего в себя опыт и лучшие идеи менеджеров зависимостей Bundler, Cargo и npm. Исходные тексты распространяются под лицензией BSD. Сборки подготовлены для macOS, Windows и Linux. Yarn позиционируется как замена npm, способная работать с репозиториями npm, но обеспечивающая более высокий уровень производительности, надёжности и безопасности. Основными причинами создания нового пакетного менеджера стала невозможность избавления npm от ряда проблем без его кардинальной переработки. В частности, npm не обеспечивает постоянство установленных зависимостей для разных пользователей и систем. В зависимости от порядка установки пакетов, структура директории node_modules существенно отличается у разных пользователей, что приводит в возникновению ситуаций, в которых у одного пользователя всё может отлично работать, а у другого
Представлен релиз открытого JavaScript-движка V8 6.1, развиваемого при участии Google и используемого в браузерах на базе Chromium. Новая версия примечательна рядом заметных оптимизаций: Производительность операций Maps и Sets при использовании итераторов или вызове через Map/Set.prototype.forEach возросла до 11 раз, по сравнению с выпуском V8 6.0; Производительность метода Object.prototype.isPrototypeOf, позволяющего обойтись без применения конструкторов, теперь не уступает оператору "instanceof", а в некоторых ситуация обгоняет его. Обеспечено inline-развёртывание и оптимизация операций Array.prototype.forEach; Существенно возросла производительность вызова функций и конструкторов с переменным числом аргументов, например, Reflect.apply и Reflect.construct теперь выполняются до 17 раз быстрее; Сокращён размер поставки - удаление устаревшего компилятора Crankshaft и встроенного генератора позволило более чем на 700Кб уменьшить размер результирующего бинарного файла V8; Обеспечена валидация и
На собрании Генеральной Ассамблеи ECMA официально утверждён стандарт ECMAScript 2017 (ECMAScript 8 или "ECMA-262 8th edition"), определяющий базовые функциональные возможности JavaScript. ECMAScript 8 был подготовлен в соответствии с представленным в прошлом году непрерывным процессом формирования стандартов ECMAScript, которые теперь выпускаются ежегодно и развиваются в рамках непрерывно обновляемого варианта спецификации ECMAScript Next. В ECMAScript 8 вошли изменения, связанные с устранением недоработок и внесением уточнений к прошлым выпускам ECMAScript, а также добавлено несколько новшеств. В стандарт перенесены уже поддерживаемые браузерами возможности, поэтому ECMAScript 8 сразу доступен во всех основных браузерах и не требует дополнительного времени на реализацию. Основные новшества: Добавлены методы Object.values() и Object.entries(), который дополняют уже стандартизированный метод Object.keys и позволяют получить массив из значений и связок ключ/значение для хранящихся в объекте данных
Представлен релиз Node.js 8.0.0, платформы для выполнения высокопроизводительных сетевых приложений на языке JavaScript. Node.js 8.0 относится к веткам с длительным сроком поддержки, но данный статус будет присвоен только в октябре, после проведения стабилизации. Время выпуска обновлений для LTS-веток составляет 4 года. Поддержка прошлой LTS-ветки Node.js 6.0 продлится до 2020 года, а позапрошлой LTS-ветки 4.x до апреля 2018 года. Поддержка промежуточной ветки Node.js 7.0 будет прекращена в июле 2017 года. Из улучшений в Node.js 7.0 отмечается обновление движка V8 до версии 5.8, в которой реализована новая схема компиляции, основанная на применении интерпретатора Ignition и JIT-компилятора Turbofan. Новая схема примечательна повышением производительности выполнения JavaScript-приложений и снижением расхода памяти. В V8 5.8 также представлен новый подход к стабилизации - ABI данной версии будет совместим с V8 5.9 и 6.0, что позволит реализовать обновление движка V8 до новых выпусков в рамках жизненного
Компания Google решила отказаться от использования, поддержки и развития пакета Octane, созданного в 2012 году в качестве инструмента для тестирования производительности JavaScript-движков, оперирующего кодом реальных популярных web-проектов вместо синтетического стресс-тестирования возможностей, которые мало влияют на производительность работы с реальными сайтами. В последние годы технологии разработки сильно изменились, появился стандарт ECMAScript 2015, получили распространение новые web-фреймворки и библиотеки. По мнению Google, пакет Octane исчерпал себя, больше не отражает реальную производительность и не может служить меркой для оценки браузерных движков и выбора направлений оптимизации. Показатели браузеров в Octane достигли примерно одного уровня. Аргументом против синтетических тестов также выступает то, что производители браузеров не брезгуют внесением специальных оптимизаций, не влияющих на работу в реальных условиях, но позволяющих добиться улучшения показателей при прохождении тестов
После года разработки состоялся релиз Cheerp 1.3 (бывший Duetto), открытого инструментария для разработки клиентских и серверных web-приложений на языке C++, а также для портирования существующих C++ программ для работы в Web-браузере. Код распространяется под свободной лицензией UI/NCSA, также используемой в проекте LLVM. Библиотеки поставляются под лицензией GPLv2+. По своей сути Cheerp напоминает систему Emscripten и также использует наработки LLVM для обеспечения компиляции кода C++ в представление на языке JavaScript. Ключевым отличием Cheerp от Emscripten является ориентация на достижении более высокой производительности получаемого JavaScript-кода и предоставление средств для использования из С++ программ всех возможностей DOM, браузерного API и HTML5, в том числе WebGL. Cheerp не пытается, как Emscripten, эмулировать традиционное адресное пространство при помощи типизированных массивов, а обеспечивает прямой маппинг C++ объектов в объекты JavaScript, что позволяет снизить потребление памяти, так
Вышла новая версия Vue.js, JavaScript-фреймворка для построения пользовательских интерфейсов. Vue.js использует декларативное описание интерфейса и MVC-подобный паттерн, аналогично фреймворкам React и Angular. Фреймворк примечателен низким порогом вхождения (достаточно знать HTML, CSS и JavaScript), компактным ядром (17 Кб+Runtime), расширяемостью для проектов любого масштаба, обеспечением высокой производительности без необходимости внесения в приложения дополнительных оптимизаций, гибкой системой применения эффектов. Код проекта распространяется под лицензией MIT. Основные новшества: Scoped Slots: До версии 2.1 родительский шаблон мог внедрять свой HTML-контент во встраиваемый компонент (посредством тега "slot" в шаблоне встраиваемого компонента), но при этом у родителя не было доступа к текущим данным встраиваемого компонента для непосредственной подстановки их во внедряемый контент. Таким образом, внедряемый контент мог динамически отрисовываться, опираясь лишь на данные родителя. Теперь же
Представлен релиз Node.js 7.0.0, платформы для выполнения высокопроизводительных сетевых приложений на языке JavaScript. Прошлая ветка Node.js 6.x на прошлой неделе получила статус выпуска с длительным сроком поддержки (LTS), обновления для которого будут выпускаться в течение 30 месяцев. Прошлая LTS-ветка 4.x будет поддерживаться до апреля 2017 года. LTS-ветки предлагаются для сложных промышленных внедрений, крупных предприятий и тех, для кого стабильность имеет первоочередное значение. Ветка Node.js 7 относится к промежуточным выпускам и будет поддерживаться до июня 2017 года. Выпуск Node.js 8 запланирован на апрель 2017 года. Из улучшений в Node.js 7.0 отмечается новый парсер URL, соответствующий стандарту оформления URL, подготовленному сообществом WHATWG. Движок V8 обновлён до версии 5.4, в которой обеспечена поддержка 98% возможностей JavaScript, определённым в спецификации ECMAScript 6. Проведена работа по увеличению производительности и повышению надёжности.
Представлен проект PurpleJS, в рамках которого развивается похожий на Node.js фреймворк, позволяющий создавать серверные приложения на языке JavaScript. Ключевой особенностью PurpleJS является использование виртуальной машины Java (JVM) для выполнения приложений, что позволяет добиться неплохой производительности и предоставить возможность интеграции с приложениями и библиотеками на языке Java. Код проекта написан на языке Java и распространяется под лицензией Apache 2.0. PurpleJS позволяет создавать быстрые и лёгковесные серверные приложения на языке JavaScript или комбинируя JavaScript с Java, без применения модели асинхронного программирования, свойственной Node.js. Для сборки проектов используется инструментарий Gradle. Возможности PurpleJS: Запуск проектов на JavaScript поверх JVM; Создание многопоточных приложений на JavaScript; Создание серверных приложений на JavaScript, имеющих доступ к библиотекам Java; Построение изоморфных приложений, в которых один код используется как на стороне