LINUX.ORG.RU

Вышел NodeJS 16

 ,


0

1

Вышел NodeJS версии 16, осуществлён переход на V8 девятой версии (9.0), обновлён пакетный менеджер NPM до 7 версии, обновлено API для разработки дополнений (Node-API) до 8-ой версии.

Так же релиз содержит в себе изменения:

  • стабилизирован Timers Promises API, теперь вместе с таймерами можно использовать async/await и они стали полноценно поддерживать API Promises,
  • реализована экспериментальная поддержка Web Crypto API,
  • стабилизирована реализация AbortController (позволяет отменять сигналы в выбранных API на основе Promise) на основе AbortController WebAPI,
  • стабилизированы Source Maps версии 3,
  • реализованы atob (buffer.atob(data)) и btoa (buffer.btoa(data)) для совместимости с legacy web API.

Ну и по традиции, много порезано, много API попало в DEPRECATED, помеченные как DEPRECATED API удалены. Подробности по ссылке.

>>> Подробности



Проверено: Shaman007 ()
Последнее исправление: unfo (всего исправлений: 1)

Ответ на: комментарий от fernandos

Смотря где. Чем хороши несколько плохо совместимых реализаций? Чем плохо то, что самый быстрый js-движок разрабатывает Гугл? Однажды он может потребовать за него деньги? Ну это вряд ли? Встроит бэкдоры? Тоже вряд ли.

Im_not_a_robot ★★★★★
()
Ответ на: комментарий от Im_not_a_robot

Чем хороши несколько плохо совместимых реализаций

Зачем делать

несколько плохо совместимых реализаций

?

Чем плохо то, что самый быстрый js-движок разрабатывает Гугл

Тем, что случится то же, что стало в ИЭ: в один момент гугл забьёт на стандарты, а что, у них есть в8, большинство браузеров и десктопная нода, ну и будет у них свой модный ЯП.

fernandos ★★★
()
Ответ на: комментарий от fernandos

Зачем делать

Такова жизнь. Если разные люди делают несколько реализаций, они будут плохо совместимы. Вон ядро Линупс до сих пор не могут компилировать Шлангом.

Тем, что случится то же, что стало в ИЭ: в один момент гугл забьёт на стандарты

Это вообще разные вещи. Ишак за счет монополии тормозил индустрию, а гугл наоборот бежит впереди паровоза, им не выгодно тормозить. Что ты понимаешь под «забьет на стандарты»? Сделает пи=4? Заставит ко всем функциям добавлять blm_f1()?

Im_not_a_robot ★★★★★
()
Ответ на: комментарий от vertexua

Да как он мог! Как это надоест?

На здоровье как бы. Просто полезность таких великов на уровне стат. погрешности. Сегодня ты перевёл всё на дено, а завтра он никому вдруг стал не нужен, потому что хипстор увлёкся чем-то более модным.

crutch_master ★★★★★
()
Ответ на: комментарий от crutch_master

Тем, что ecma модули позволяют позволяют понять экспортируемые из модуля сущности, без выполнения кода в модуле. Достаточно просто посмотреть на заголовки функций.

А с commonjs ты должен выполнить код в модуле и только после этого станет понятно, что должно быть экспортировано.

Так же ecma модули могут в циклические зависимости.

Да и синтаксис у них поприятнее, без всяких module.exports = exports = {…}

anonymous
()
Ответ на: комментарий от crutch_master

Эпохальное изменение. Сделать промис с таймером до этого было никак?

Можно, но подбешивает что элементарный delay() выглядит как кусок нечитаемого говна.

Vit ★★★★★
()
Ответ на: комментарий от crutch_master

Первый вариант можно тришейкить с гарантией, потому что источники не слиплись в общий объект. Ну и его можно асинхронно грузить.

Короче, для браузеров это смысл имеет. Для сервера - лично у меня кейзов нет.

Vit ★★★★★
()

стабилизированы Source Maps версии 3,

Откуда это? Сорсмапы - библиотека, ни к v8 ни к ноде это вроде ни какого отношения не имеет.

Vit ★★★★★
()
Ответ на: комментарий от anonymous

Так же ecma модули могут в циклические зависимости.

Я так делал и с require. Правда нода ругается на такое с 14-ой версии по-моему.

Тем, что ecma модули позволяют позволяют понять экспортируемые из модуля сущности, без выполнения кода в модуле. Достаточно просто посмотреть на заголовки функций.

Ээээ. Так можно дойти до того, что жс превратится в новый с++ с генериками, шаблонами и заголовками. Это - динамическая херня, где всё делается в рантайме. import делает погоду браузеру, в котором require с ajax будет делать стрёмно и в теги пихать ссылки на скрипты уже не вариант. На бекенде кому на это не насрать?

crutch_master ★★★★★
()
Ответ на: комментарий от Vit

Короче, для браузеров это смысл имеет. Для сервера - лично у меня кейзов нет.

Ну вот тоже думаю, что остаётся только унификация, чтобы либы можно было использовать везде без приседаний и браузеров, которые постоянно что-то грузят и не воспринимают свой сцайт, как локальное приложение.

Можно, но подбешивает что элементарный delay() выглядит как кусок нечитаемого говна.

Это хорошо, на самом деле. Особых изменений нет уже 3-й мажорный выпуск, что внушает какую-то уверенность.

crutch_master ★★★★★
()
Ответ на: комментарий от crutch_master

Ну вот тоже думаю, что остаётся только унификация

То да, но поздновато import завезли, уже наработок навалом, ХЗ как переезжать. Я еще годик-другой подожду, пока все определятся.

К тому же, если честно, универсальный код для сервера и клиента - это IMO миф. Очень мало реальных кейзов где действительно имеет смысл.

Vit ★★★★★
()
Ответ на: комментарий от Vit

Очень мало реальных кейзов где действительно имеет смысл.

Нууу, какой-нибудь не к ночи упомянутый moment или pdfmake, но навскидку тоже больше не назову.

crutch_master ★★★★★
()
Ответ на: комментарий от crutch_master

Какой-нибудь роутер, и server side rendering.

Но учитывая, что клиентский код прогоняют через всякие rollup/webpack/babel, заморачиваться с «универсальностью искаропки» совершенно нелепо.

Я пока делаю так чтобы фанбои в трекере мозг не выносили.

Vit ★★★★★
()
Ответ на: комментарий от Vit

элементарный delay() выглядит как кусок нечитаемого говна.

const sleep = (ms) => new Promise((resolve) => void setTimeout(resolve, ms));
drsm ★★
()
Ответ на: комментарий от crutch_master

import делает погоду браузеру, в котором require с ajax будет делать стрёмно и в теги пихать ссылки на скрипты уже не вариант. На бекенде кому на это не насрать?

на бекенде тоже бывает ситуация когда хочется избежать RCE.

при использовании ESM имеем статический исходник (import(), eval и new Function() предполагаем отрубленым), это основной плюс их, как по мне.

но в ноде да, особой разницы нет.

drsm ★★
()
Последнее исправление: drsm (всего исправлений: 2)
Ответ на: комментарий от Vit

Да не. Оно же почти человеческое стало с async/await. Раньше эта конструкция не работала без обёртки, накостылили в 16 версии. Так что теперь заживём!

shleemypants
()
Ответ на: комментарий от shleemypants

top level async? для скриптописания полезно.

Vit ★★★★★
()
Ответ на: комментарий от anonymous

Нода это werkzeug для сборки фронта. И рампила бабла на беке. Все.

GP
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.