LINUX.ORG.RU

Вышел Node.js 19.0

 ,


0

3

18 октября состоялся релиз серверной платформы на языке JavaScript Node.js 19.0.

Node.js 19.0 заменит Node.js 18 и станет «текущей» версией со сроком поддержки до апреля 2023 года, тогда как 18я версия после стабилизации перейдет в статус LTS.

Из изменений:

  • Добавлена возможность запуска в режиме «наблюдения» с использованием опции node --watch. Запуск в этом режиме перезапускает процесс при изменении импортированного файла:
    node --watch index.js
    

    Эта функция доступна в версиях 19.0.0 и 18.11.0+.

  • Начиная с этого выпуска, Node.js по умолчанию для keepAlive устанавливает значение true. Это означает, что любое исходящее HTTP(S) соединение будет автоматически использовать HTTP 1.1 Keep-Alive. Продолжительность поддержания активности по умолчанию составляет 5 секунд. Включение функции Keep-Alive обеспечит лучшую пропускную способность, поскольку соединения по умолчанию используются повторно.
    • Кроме того, агент теперь может анализировать ответ Keep-Alive, который могут отправлять серверы. Этот заголовок инструктирует клиента о том, как долго он должен оставаться на связи. С другой стороны, в Node.js HTTP-сервер теперь автоматически отключает бездействующие клиенты (которые используют HTTP Keep-Alive для повторного использования соединения) при вызове close()).
  • API WebCrypto теперь стабилен, за исключением следующих алгоритмов:
    • Ed25519,
    • Ed 448,
    • X25519,
    • X448.
  • Удален флаг --experimental-specifier-resolution. Его функциональность теперь может быть достигнута с помощью пользовательских загрузчиков.
  • Удалена поддержка DTrace/SystemTap/ETW. Основная причина заключается в расстановке приоритетов ресурсов. Сложность поддержания поддержки в актуальном состоянии оказалась нецелесообразной без четкого плана поддержки этих инструментов.
  • Движок V8 обновлен до версии 10.7, которая является частью Chromium 107. Эта версия включает в себя новую функцию JavaScript API: Intl.NumberFormat.

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

★★★★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 2)

поздр всих формощлёпов и любителей сахарочка =)

// З.Ы.Ы ноддэ помойкэ! в атаку!

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

// З.Ы.Ы ноддэ помойкэ! в атаку!

Да там вроде как и альтернативы пытались пилить, оно как freebsd, всё никак не закопается :-D

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

под сахарочком вы понимаете:

повсеместный const (который иммутирует только примитивы и саму ссылку) вместо let даже там, где оно нафиг не нужно?

бигуди на хештаблицах и функции 50и аргументов (иногда завернутые в одну хештаблицу) вместо классов?

прокидывание всей дряни по иерархии, колбекхел и непредсказуемое различающееся поведение в стд?

в отличии от многих новых и старых технологий, на жс можно пейсать код нормально, но популяризируемая в массы культура разработки навязывает обычай все делать наоборот

Syncro ★★★★★
()
Последнее исправление: Syncro (всего исправлений: 1)
Ответ на: комментарий от ggrn

// З.Ы.Ы ноддэ помойкэ! в атаку!

Да там вроде как и альтернативы пытались пилить, оно как freebsd, всё никак не закопается :-D

Те алтернативы в этом смысле ничем не лучше, если не скаать более 😥

her_s_gory
()

серверной платформы на языке JavaScript Node.js 19.0.

С чего вдруг серверной то, системной же.
Там из коробки для сервера только модуль 'http'

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

колбекхел

Размораживайся. С 12 версии можно асинкавайт

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

повсеместный const (который иммутирует только примитивы и саму ссылку) вместо let даже там, где оно нафиг не нужно?

Так это от разраба зависит.

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

повсеместный const

Лучшее что может случиться с языком программирования

вместо классов?

ООП как в C++/Java худшее может случиться с языком программирования

колбекхел

Давно уже async/await

По всему остальному есть TypeScript

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

Ну современные практики написания кода на JS сделали его вполне читаемыми.

Те же хештаблицы в аргументе имитируют именованные аргументы и неплохо имитируют. Я думаю, уже пора запрещать функции с обычными аргументами.

А классы не нужны. ООП провалилось.

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

Так теперь в ноде жабаскрипт чоли? Ужос.

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

Классы в ноде можно и классы нужны.

Можно, но не нужны.

Уж если случается состояние - нахрена его в каждый вызов функции пихать?

Для этого есть много причин.

Функции без скрытого состояния легко тестировать. Ты знаешь, что возвращаемое значение зависит только от входящих параметров.

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

Код, в котором все детали на виду, легко читать и отлаживать.

При всём при этом, хочу заметить, что вызов метода объекта в плане передачи состояния вообще ничем не отличается, чем если передавать это состояние первым аргументом. Нет никакой разницы между a.b(c) и b(a, c) кроме синтаксиса. Поэтому твой аргумент никакой критики не выдерживает, если честно. Ты и так это состояние пихаешь в каждый вызов.

Разница начинается там, где в дело вступает наследование и переопределение методов.

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

Нет никакой разницы между a.b(c) и b(a, c) кроме синтаксиса

Ага, передать не проблема. Получить проблема. a.b(c) вернёт d, а голая функция что, { a, d }? Сохрани да используй в следующем вызове. Зачем такой геморой?

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

Ага, передать не проблема. Получить проблема. a.b(c) вернёт d, а голая функция что, { a, d }? Сохрани да используй в следующем вызове. Зачем такой геморой?

Голая функция поменяет содержимое a и вернёт d. У нас не хаскель, у нас жаваскрипт, где всё изменяемо.

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

Нет никакой разницы между a.b(c) и b(a, c) кроме синтаксиса.

Есть.

Для a==null a.b(c) даст ошибку, тогда как b(a, c) вполне работоспособно.

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

как без классов в JS выглядит полиморфизм

Так же как и везде. При чём тут классы? Тем более в ЖС где можно вертеть классы как угодно.

no-such-file ★★★★★
()
Ответ на: комментарий от FishHook

Покажи, пожалуйста, как без классов в JS выглядит полиморфизм?

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

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

А классы не нужны. ООП провалилось.

А мужики-то не знают…(C)

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

О чем и речь, JS на сервере не нужен.

Немного поправил.

her_s_gory
()

The complexity to keep the support up-to-date has proved not worth

Сложность поддержания поддержки в актуальном состоянии оказалась нецелесообразной

Переводили через DeepL?

mydibyje ★★★
()

В debian nodejs v12.22.12 npm 7.5.2
Мне это нужно для программы localtunnel

Gennadevich
()

Хотел всё узнать, демократические зловреды только на сабже популярны, или есть еще какие-то такие же примеры из других сред программирования?

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

Вы про malicious packages? Так они есть в любой свалке пакетов у платформы, которая популярна, а не мертва.

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

Здесь должна быть копипаста про психушку…

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

две стопки молока, этому комраду!

// про тики и к чему сводится асинхронка ещё забыли ;) хотя не, колбэкозАд вроде был ^.^

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

при чем здесь формошлепы? Нода - это сервер-сайд.

а формы от фронтокаки то как будете хэндлить, да исчо и асинхронно подавай нибось?)) и всяческие npm помойки собирать))

А исходник можно хоть в ванильном vi править.

КО.

// Нода - это хайпо-сайд. fxd.

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

к чему сводится асинхронка

К ивентам и обещанным объектам, как и должно быть.

В Qt такие же промисы и в современных либах на си (mpv, SDL2) асинхронные функции обрабатываются через регистрацию событий. По другому никак.

uin ★★★
()
Последнее исправление: uin (всего исправлений: 1)
Ответ на: комментарий от pr849

Его даже в микроконтроллеры уже притащили.

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

а какжи single responsibility? интереснее теребонькаться с конструированием суперглобалов без периспользования или конвертацией ненужных структур в неосмысливаемые?

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

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

а какжи single responsibility? интереснее теребонькаться с конструированием суперглобалов без периспользования или конвертацией ненужных структур в неосмысливаемые?

Не понял о чем ты.

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

Потому, что ООП это неудачное изобретение, а процедурное программирование - удачное, особенно приправленное ФП.

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

в жс появились современные практики как раз в виде классов

Запили мне красоту ООП. И жэлательно (‘э’ на правах рекламы) ткни в реализацию.

Антипаттерн, паттерн. Крутые слова. Это кто же мне в моём любимом и простом JS запретит делить на ноль? А ваши недоязыки упадут в кору. Нода божественна, нет упорина по TS, которые смогли только осилить шарпея и ни ухом ни рылом не заглядывали в божественные альтенативы.

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

И правда - ляпота-то какая.

pit@pit-desktop:~$ node
Welcome to Node.js v18.11.0.
Type ".help" for more information.
> 0/0
NaN
> 1/0
Infinity
> typeof 0
'number'
> typeof NaN
'number'
Даже матом ругаться не хочется.

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

ООП как в C++/Java худшее может случиться с языком программирования

Ага, удачи что-то написать без классов. Да и жаву во многом косплеит тс.

Давно уже async/await

Мусор. Ядовитый и колхозный. Вместо нормального.

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

жабокод смотри любой и если не видешь - то смотри до тех пор, пока не увидешь. в рекурсию только не войди сисюрити…

qbbr ★★★★★
()
Последнее исправление: qbbr (всего исправлений: 1)
Ответ на: комментарий от vbr

Можно, но не нужны.

Ога.

Функции без скрытого состояния легко тестировать. Ты знаешь, что возвращаемое значение зависит только от входящих параметров.

А вот и второсортные методички пропагандистские подъехали. Я тебе открою тайну, но это совсем мусорная методичка. Повторяя её ты сразу же кричишь о своём невежестве. Потому как есть замыкания, которые являются неявные состоянием и от них результаты выполнения зависят. А без замыканий ничего не написать.

Поэтому любое замыкание - это тоже самое, что глобальная переменная. Просто в сишке нет гц и «замыкаются» там только глобалы, но суть та же.

Функции без скрытого состояния можно вызывать в разных потоках,

Да ты чё. Зачем ты рассказываешь что-то о потоках, если их в глаза не видел?

для этого нужно думать только про их аргументы.

Ога? Я выше про замыкания сказал.

Код, в котором все детали на виду, легко читать и отлаживать.

Код - это рядовой мусор? Ну да. Если он ничего не делает.

При всём при этом, хочу заметить, что вызов метода объекта в плане передачи состояния вообще ничем не отличается, чем если передавать это состояние первым аргументом.

А это совсем какая-то древняя методичка. Ты в принципе не понимаешь о чём говоришь.

Нет никакой разницы между a.b(c) и b(a, c) кроме синтаксиса.

Нет, разница есть. И она фундаментальна. Класс - это свой скоуп, своя область видимости. Глабал - это днище.

Особенно учитывая то, что в жс нет перегрузки. Удачи там сделать b(a)/b(c).

Поэтому твой аргумент никакой критики не выдерживает, если честно. Ты и так это состояние пихаешь в каждый вызов.

Ты хотел сказать твой? Твой да. Его - не знаю.

Разница начинается там, где в дело вступает наследование и переопределение методов.

Нет, разница существует ещё до. Но тебе о ней просто не рассказали.

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

а, ну типичный эксперт. Что-то заявил и как только спросили про подробности - тут же начинается «не покажу», «найди сам». Ничего нового.

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