Node.js 22.0 шығарылды, бұл JavaScript тілінде желілік қолданбаларды іске қосу платформасы. Node.js 22.0 ұзақ мерзімді қолдау тармағы ретінде жіктеледі, бірақ бұл мәртебе тұрақтандырудан кейін қазан айында ғана тағайындалады. Node.js 22.x нұсқасына 30 жылдың 2027 сәуіріне дейін қолдау көрсетіледі. Node.js 20.x алдыңғы LTS филиалына техникалық қызмет көрсету 2026 жылдың сәуіріне дейін және соңғы LTS 18.x филиалының алдындағы жыл 2025 жылдың сәуіріне дейін созылады. Node.js 21.x кезеңдік тармағы 1 жылдың 2024 маусымында тоқтатылады.
Негізгі жақсартулар:
- V8 қозғалтқышы Chromium 12.4 жүйесінде пайдаланылған 124 нұсқасына жаңартылды. V21 8 қозғалтқышын пайдаланған Node.js 11.8 тармағымен салыстырғандағы өзгерістердің арасында мыналар атап өтілді:
- WasmGC кеңейтімін қолдау, ол қоқыс жинағышты (Kotlin, PHP, Java және т. WasmGC сызықты емес жадты бөлуді пайдалана алатын құрылымдар мен массивтердің жаңа түрлерін қосады.
- Массив тәрізді, қайталанатын немесе асинхронды қайталанатын нысаннан көшірілген Array нысанының жаңа данасын асинхронды түрде қайтаратын Array.fromAsync() әдісін қолдау.
- .map, .filter, .find, .take, .drop, .forEach және .reduce сияқты итератор әдістерін қолдау.
- Мәндер жинағын анықтайтын және қиылысу, біріктіру, айырмашылық және қосу сияқты жалпы жиын әрекеттерін жүзеге асыратын әдістерді ұсынатын Set нысанын қолдау.
- Maglev оңтайландыратын JIT компиляторы әдепкі бойынша қосылады, ол көп қолданылатын JavaScript коды үшін өнімділігі жоғары машина кодын жылдам жасауға бағытталған. Maglev мүмкіндігін қосу ұзақ мерзімді операцияларды орындамайтын қысқа мерзімді CLI қолданбаларын айтарлықтай жылдамдатады, мысалы, Jetstrea сынағын аяқтау уақыты 7.5%, ал Speedometer сынағы 5% қысқарады.
- HighWaterMark опциясының мәнін 16 КБ-тан 65 КБ-қа дейін ұлғайту арқылы ағындармен жұмыс жеделдетілді (жазба буферленетін шекті анықтайды). Өзгеріс жадты тұтынудың артуына әкеледі, сондықтан шектеулі жедел жадта жұмыс істеуге арналған қолданбалар setDefaultHighWaterMark() қызметіне қоңырау шалу арқылы ескі мәнге оралуы қажет болуы мүмкін.
- AbortSignal инстанциясын тиімдірек ету арқылы fetch() және сынақ жүгіруші API интерфейстерінің өнімділігі жақсарды. Файлдық жүйелермен синхронды жұмысқа қатысты API өнімділігі жақсартылды.
- Синхронды режимде JavaScript ESM модульдерін (ECMAScript модульдері) жүктеу үшін "талап()" шақыруын пайдалану үшін эксперименттік мүмкіндік берілген. ESM модульдері браузерлерде пайдаланылады және Node.js үшін арнайы CommonJS модульдерін ауыстырады. «Require()» арқылы жүктеу үшін ESM модулі синхронды режимде орындалуы керек (жоғарғы деңгейде күтпестен). Қолдау "--экспериментальды-талап-модуль" жалаушасы арқылы қосылады.
- "--run" пәрмені арқылы package.json файлында анықталған сценарийлерді іске қосу үшін эксперименттік мүмкіндік қосылды. "
- Импортталған файл өзгерген кезде процестің қайта іске қосылуын қамтамасыз ететін қарау режимін енгізу арқылы «түйін – қарау» пәрмені тұрақты санатқа жылжытылды (мысалы, «түйін – қарау индексі.js» орындалса, index.js өзгерген кезде процесс автоматты түрде қайта іске қосылады).
- WebSocket API бағдарламасының жергілікті іске асырылуы тұрақтандырылды, бұл WebSocket қосымша тәуелділіктерді орнатусыз клиент режимінде пайдалануға мүмкіндік береді.
- Navigator API үшін ішінара қолдау қосылды.
- Webstreams API деflate-raw қысу пішімін қолдауды қосты.
- Файл жолдарының үлгісін сәйкестендіру үшін node:fsmodule файлына glob және globSync функциялары қосылды.
- Қате конфигурацияланған IPv6 стектерін өңдеу жақсартылған. IPv6 жұмысында ақаулар туындаған жағдайда жылдам кері қайтару үшін Happy Eyeballs алгоритмі енгізілді.
- Util API ескірген.
- Жаңартылған тәуелділік нұсқалары: npm 10.5.1, libuv 1.48.0, simdutf 5.2.3, c-ares 1.28.1, zlib 1.3.0.1-motley-24c07df, simdjson 3.8.0, ada 2.7.7. .
Node.js платформасын веб-қосымшаларды сервер жағында қолдау үшін де, стандартты клиент және сервер жағындағы желілік бағдарламаларды жасау үшін де пайдалануға болады. Node.js қосымшаларының функционалдығын кеңейту үшін, соның ішінде іске асыратын модульдердің үлкен жиынтығы дайындалды. серверлер және HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 клиенттері, әртүрлі веб-фреймворктармен интеграциялауға арналған модульдер, WebSocket және Ajax өңдегіштері, ДҚБЖ-ға қосқыштар (MySQL, PostgreSQL, SQLite, MongoDB), үлгі қозғалтқыштары, CSS қозғалтқыштары, криптографиялық алгоритмдер мен авторизация жүйелерін (OAuth) енгізу, XML парсерлері.
Параллельді сұраулардың үлкен санын өңдеу үшін Node.js блокталмаған оқиғаларды өңдеуге және кері шақыру өңдеушілерін анықтауға негізделген асинхронды кодты орындау үлгісін пайдаланады. Қосылымдарды мультиплекстеу үшін қолдау көрсетілетін әдістер epoll, kqueue, /dev/poll және таңдауды қамтиды. Қосылымды мультиплекстеу үшін Unix жүйелеріндегі libev және Windows жүйесіндегі IOCP қосымшасы болып табылатын libuv кітапханасы пайдаланылады. Libeio кітапханасы ағындар пулын жасау үшін пайдаланылады, ал c-ares блокталмаған режимде DNS сұрауларын орындау үшін біріктірілген. Блоктауды тудыратын барлық жүйелік шақырулар ағындық пул ішінде орындалады, содан кейін сигнал өңдеушілері сияқты өз жұмысының нәтижесін атауы жоқ құбыр арқылы кері жібереді.
JavaScript кодының орындалуы Google әзірлеген V8 қозғалтқышын пайдалану арқылы қамтамасыз етіледі (осыдан басқа, Microsoft Chakra-Core қозғалтқышы бар Node.js нұсқасын әзірлеуде). Негізінде Node.js Perl AnyEvent, Ruby Event Machine, Python Twisted құрылымдарына және Tcl ішіндегі оқиғаларды жүзеге асыруға ұқсас, бірақ Node.js ішіндегі оқиғалар циклі әзірлеушіден жасырылған және веб-қосымшадағы оқиғаларды өңдеуге ұқсайды. браузерде жұмыс істейді.
Ақпарат көзі: opennet.ru
