Выпуск сервернай JavaScript-платформы Node.js 16.0

Адбыўся рэліз Node.js 16.0, платформы для выканання сеткавых дадаткаў на мове JavaScript. Node.js 16.0 аднесены да галін з працяглым тэрмінам падтрымкі, але гэты статус будзе нададзены толькі ў кастрычніку, пасля правядзення стабілізацыі. Падтрымка Node.js 16.0/2023 будзе ажыццяўляцца да красавіка 14.0 года. Суправаджэнне мінулай LTS-галінкі Node.js 2023 працягнецца да красавіка 12.0 года, а пазамінулай LTS-галінкі 2022 да красавіка 10.0 года. Суправаджэнне LTS-галінкі 10 будзе спынена праз XNUMX дзён.

Асноўныя паляпшэнні:

  • Рухавічок V8 абноўлены да версіі 9.0 (у Node.js 15 выкарыстоўваўся выпуск 8.6), што дазволіла рэалізаваць у Node.js 16 такія магчымасці, як уласцівасць «indices» для рэгулярных выразаў (уключае масіў з пачатковымі і канчатковымі пазіцыямі груп супадзенняў), метад Atomics .waitAsync (асінхронная версія Atomics.wait), падтрымка выкарыстання ключавога слова await у модулях на верхнім узроўні. Паскораны выклік функцый, у сітуацыі, калі колькасць перададзеных аргументаў не адпавядае вызначаным у функцыі параметрам.
  • Стабілізаваны API Timers Promises, які прадстаўляе альтэрнатыўны набор функцый для працы з таймерам, якія вяртаюць на вынахадзе аб'екты Promise, што дазваляе абыйсціся без выкарыстання util.promisify(). import { setTimeout } from 'timers/promises'; async function run() { await setTimeout(5000); console.log('Hello, World!'); } run();
  • Дададзена эксперыментальная рэалізацыя API Web Crypto, прызначанага для выканання базавых крыптаграфічных аперацый на боку web-прыкладанняў, такіх як маніпуляцыі з крыптаграфічнымі хэшамі, генерацыя і праверка лічбавых подпісаў, кадаванне і дэкадаванні дадзеных з выкарыстаннем розных метадаў шыфравання, фармаванне крыптаграфічна надзейных выпадковых лікаў. У API таксама прадугледжаны функцыі для генерацыі ключоў і кіраванні імі.
  • N-API (API для распрацоўкі дадаткаў) абноўлены да версіі 8.
  • Ажыццёўлены пераход на новы выпуск пакетнага мэнэджара NPM 7.10.
  • Стабілізаваная рэалізацыя класа AbortController, заснаванага на Web API AbortController і які дазваляе адмяняць сігналы ў абраных API на аснове Promise.
  • Стабілізавана падтрымка трэцяй версіі фармату Source Map, які выкарыстоўваецца для супастаўлення згенераваных, апрацаваных або упакаваных модуляў з арыгінальным зыходным кодам.
  • Для сумяшчальнасці з састарэлымі Web API дададзены метады buffer.atob(data) і buffer.btoa(data).
  • Пачалося фармаванне зборак для новых прылад Apple, абсталяваных ARM-чыпам M1.
  • На платформе Linux патрабаванні да версіі кампілятара падняты да GCC 8.3.

Нагадаем, што платформа Node.js можа быць скарыстана як для сервернага суправаджэння працы Web-прыкладанняў, так і для стварэння звычайных кліенцкіх і серверных сеткавых праграм. Для пашырэння функцыянальнасці прыкладанняў для Node.js падрыхтавана вялікая калекцыя модуляў, у якой можна знайсці модулі з рэалізацыяй сервераў і кліентаў HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, модулі для інтэграцыі з рознымі web-фрэймворкамі, апрацоўшчыкі WebSocket і Aja , канектары да СКБД (MySQL, PostgreSQL, SQLite, MongoDB), шаблонізатары, CSS-рухавічкі, рэалізацыі крыптаалгарытмаў і сістэм аўтарызацыі (OAuth), XML-парсеры.

Для забеспячэння апрацоўкі вялікай колькасці паралельных запытаў Node.js задзейнічае асінхронную мадэль запуску кода, заснаваную на апрацоўцы падзей у неблакіруючым рэжыме і вызначэнні callback-апрацоўшчыкаў. У якасці спосабаў мультыплексавання злучэнняў падтрымліваюцца такія метады, як epoll, kqueue, /dev/poll і select. Для мультыплексавання злучэнняў выкарыстоўваецца бібліятэка libuv, якая з'яўляецца надбудовай над libev у сістэмах Unix і над IOCP у Windows. Для стварэння пула патокаў (thread pool) задзейнічана бібліятэка libeio, для выканання DNS-запытаў у неблакіруючым рэжыме інтэграваны c-ares. Усе сістэмныя выклікі, якія выклікаюць блакаванне, выконваюцца ўсярэдзіне пула струменяў і затым, як і апрацоўшчыкі сігналаў, перадаюць вынік сваёй працы зваротна праз неназваны канал (pipe). Выкананне JavaScript-кода забяспечваецца праз задзейнічанне распрацаванага кампаніяй Google рухавічка V8 (дадаткова Microsoft развівае варыянт Node.js з рухавіком Chakra-Core).

Па сваёй сутнасці Node.js падобны на фрэймворкі Perl AnyEvent, Ruby Event Machine, Python Twisted і рэалізацыю падзей у Tcl, але цыкл апрацоўкі падзей (event loop) у Node.js скрыты ад распрацоўніка і нагадвае апрацоўку падзей у web-дадатку, які працуе ў браўзэры. Пры напісанні прыкладанняў для node.js неабходна ўлічваць спецыфіку падзейна-арыентаванага праграмавання, напрыклад, замест выканання "var result = db.query("select..");" з чаканнем завяршэння працы і наступнай апрацоўкай вынікаў, у Node.js выкарыстоўвае прынцып асінхроннага выканання, г.зн. код трансфармуецца ў "db.query("select..", function (result) {апрацоўка выніку});", пры якім кіраванне імгненна пяройдзе да наступнага кода, а вынік запыту будзе апрацаваны па меры паступлення дадзеных.

Дадаткова можна адзначыць, што кампанія Deno, заснаваная стваральнікам Node.js для развіцця платформы новага пакалення Deno, атрымала 4.9/XNUMX млн даляраў інвестыцый. Па сваім прызначэнні Deno нагадвае Node.js, але спрабуе ўхіліць канцэптуальныя памылкі, дапушчаныя ў архітэктуры Node.js, і падаць карыстачам больш абароненае асяроддзе. Адзначаецца, што бізнэс-рашэнні кампаніі Deno будуць будуецца на цалкам адчыненых прадуктах, а мадэль Open Core з вылучэннем асобнай платнай функцыянальнасці ўспрымаецца як непрымальная для платформы Deno.

Крыніца: opennet.ru

Дадаць каментар