На собрании Генеральной Ассамблеи 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; Построение изоморфных приложений, в которых один код используется как на стороне
Компания Facebook представила новый пакетный менедржер Yarn, ориентированный на управления зависимостями в проектах на языке JavaScript. Отмечается, что при разработке Yarn использован опыт и лучшие идеи менеджеров зависимостей Bundler, Cargo и npm, при этом основное внимание уделено производительности, надёжности и безопасности. Исходные тексты распространяются под лицензией BSD. Сборки подготовлены для macOS, Windows и Linux. Для достижения высокой производительности в Yarn применена техника кэширования всех загруженных пакетов, что позволяет исключить ситуаций, в которых может потребоваться повторная загрузка. Для ускорения также применяется распараллеливание операций, что позволяет существенно сократить время установки пакетов. Надёжность обеспечивается благодаря расширенной системе блокировок и детерминированному алгоритму установки, гарантирующему, что установленный пакет будет работать идентично на любых системах. Для поддержания безопасности в Yarn осуществляется проверка целостности каждого
Компания Microsoft опубликовала язык программирования TypeScript 2.0, языка для разработки web-приложений, расширяющего возможности JavaScript. Код компилятора, транслирующего код TypeScript в представление JavaScript, распространяется под лицензией Apache 2.0, разработка ведётся в публичном репозитории через сервис GitHub. Спецификации языка открыты и опубликованы в рамках соглашения Open Web Foundation Specification Agreement. TypeScript расширяет возможности JavaScript, оставаясь полностью обратно совместимым, что сводит к минимуму затраты на адаптацию существующих приложений. Основной принцип языка - весь существующий код на JavaScript совместим с TypeScript, т.е. в программах на TypeScript можно использовать стандартные JavaScript-библиотеки и ранее созданные наработки. Более того, можно оставить существующие JavaScript-проекты в неизменном виде, а данные о типизации разместить в виде аннотаций, которые можно поместить в отдельные файлы, которые не будут мешать разработке и прямому использованию
Иркутская компания AnyChart перевела проект GraphicsJS, в рамках которого подготовлена открытая JavaScript-библиотека для рисования любой HTML5 графики и анимации на основе SVG/VML, в разряд открытых проектов. По количеству и качеству возможностей GraphicsJS превосходит такие популярные библиотеки для векторной графики, как Raphaël и Bonsai. Код GraphicsJS открыт под лицензией BSD. GraphicsJS предоставляет средства для рисования линий, в том числе с использованием кривых Безье, инструменты для работы с многострочным текстом, умную систему слоев с z-индексом, независимый от браузеров движок для трансформаций, Virtual DOM для отрисовки по необходимости, а также удобный и лаконичный API c поддержкой "chaining". Особенностью GraphicsJS также является возможность работы даже при использовании старых браузеров, включая Internet Explorer 6+, Chrome 1+ и Firefox 2+. GraphicsJS разрабатывался и ранее применялся как графический движок в коммерческих библиотеках для построения всевозможных диаграмм, предлагаемых