Сегодня вышел Node.js 14. На medium был опубликован пост с описанием основных изменений — "Node.js version 14 available now".
Node.js 14 переходит на текущую ветку поддержки "Current", вытесняя оттуда Node.js 13. По плану через 6 месяцев (октябрь 2020) 14-ая версия перейдёт в фазу LTS. Node.js 12 будет поддерживаться до апреля 2022 года, Node.js 10 — до апреля 2021 года.
В Node.js 14 стабилизирован Diagnostic Report. Это API позволяет получить много полезной информации для локализации утечек памяти, причин падений и проблем производительности. В канале было несколько постов про эту фичу, их можно почитать тут и тут.
В новой версии доступен экспериментальный Async Local Storage API (есть бэкпорт для Node.js 13.10). Благодаря ему в Node.js появляется готовый инструмент для сохранения данных на время жизни http-запросов и любых других асинхронных процессов.
Были сделаны мажорные исправления в Streams API для улучшения согласованности и устранения неоднозначности. Например,
Появилась экспериментальная поддержка Web Assembly System Interface (WASI), цель которого упростить работу с нативными модулями в Node.js. Про WASI также был пост в канале ранее, его можно найти тут.
Движок V8 обновлён до v8.1. Новая версия приносит улучшения производительности и поддержку новых спецификаций: Optional Chaining, Nullish Coalescing,
В Node.js 13 ECMAScript modules стали доступны без явной передачи флага
#nodejs #release
https://medium.com/@nodejs/node-js-version-14-available-now-8170d384567e
Node.js 14 переходит на текущую ветку поддержки "Current", вытесняя оттуда Node.js 13. По плану через 6 месяцев (октябрь 2020) 14-ая версия перейдёт в фазу LTS. Node.js 12 будет поддерживаться до апреля 2022 года, Node.js 10 — до апреля 2021 года.
В Node.js 14 стабилизирован Diagnostic Report. Это API позволяет получить много полезной информации для локализации утечек памяти, причин падений и проблем производительности. В канале было несколько постов про эту фичу, их можно почитать тут и тут.
В новой версии доступен экспериментальный Async Local Storage API (есть бэкпорт для Node.js 13.10). Благодаря ему в Node.js появляется готовый инструмент для сохранения данных на время жизни http-запросов и любых других асинхронных процессов.
Были сделаны мажорные исправления в Streams API для улучшения согласованности и устранения неоднозначности. Например,
http.OutgoingMessage
теперь подобен stream.Writable
, а net.Socket
ведёт себя точно также как stream.Duplex
. Ещё одно заметное изменение — включение по умолчанию опции autoDestroy
.Появилась экспериментальная поддержка Web Assembly System Interface (WASI), цель которого упростить работу с нативными модулями в Node.js. Про WASI также был пост в канале ранее, его можно найти тут.
Движок V8 обновлён до v8.1. Новая версия приносит улучшения производительности и поддержку новых спецификаций: Optional Chaining, Nullish Coalescing,
Intl.DisplayNames
, Intl.DateTimeFormat
( calendar
, numberingSystem
).В Node.js 13 ECMAScript modules стали доступны без явной передачи флага
--experimental-modules
. В 14-ой версии сделан следующий значимый шаг — убрано предупреждение при использовании ESM ExperimentalWarning: The ESM module loader is experimental.
Тем не менее формально ESM остаётся экспериментальной фичей, поэтому в будущем могут быть мажорные изменения.#nodejs #release
https://medium.com/@nodejs/node-js-version-14-available-now-8170d384567e
Medium
Node.js version 14 available now
This blog was written by Michael Dawson and Bethany Griggs, with additional contributions from the Node.js Community Committee and the…
25 апреля npm немного поштормило. Ошибка в пакете is-promise, привела к поломке трёх миллионов зависимых проектов. Форбс Линдсей — автор библиотеки — написал постмортем.
После добавления поддержки ESM новый файл index.mjs не был добавлен в секцию
С момента публикации сломанной библиотеки до её полного фикса прошло четыре часа. Для предотвращения проблем в будущем был удалён
#npm #postmortem #esm #nodejs
https://medium.com/@forbeslindesay/is-promise-post-mortem-cab807f18dcc
После добавления поддержки ESM новый файл index.mjs не был добавлен в секцию
files
в package.json. Также в секции exports
идентификатор модуля был без префикса ./
. Из-за опубликованного кода перестал работать require вида require('is-promise/index')
, require('is-promise/index.js')
, require('is-promise/package.json')
.С момента публикации сломанной библиотеки до её полного фикса прошло четыре часа. Для предотвращения проблем в будущем был удалён
.npmignore
и добавлен прогон тестов для Node.js 12 и 14, также были добавлены тесты, использующие npm pack для проверки публикуемого API и настроена публикация пакетов из CI. Разработчики Node.js в свою очередь обновили документацию, уточнив, что package.exports
должен явно включать в себя все необходимые точки входа.#npm #postmortem #esm #nodejs
https://medium.com/@forbeslindesay/is-promise-post-mortem-cab807f18dcc
Medium
is-promise post mortem
Last Saturday, I made the decision to try and catch up on some of the many contributions to my open source projects. One of the first pull…