Node.js 22.0, JavaScript-də şəbəkə proqramlarını idarə etmək üçün platforma buraxıldı. Node.js 22.0 uzunmüddətli dəstək şöbəsi kimi təsnif edilir, lakin bu status sabitləşmədən sonra yalnız oktyabr ayında təyin ediləcək. Node.js 22.x 30 aprel 2027-ci ilə qədər dəstəklənəcək. Node.js 20.x-in əvvəlki LTS filialına texniki qulluq 2026-cı ilin aprelinə qədər və sonuncu LTS 18.x filialından əvvəlki il 2025-ci ilin aprelinə qədər davam edəcək. Node.js 21.x-in quruluş bölməsi 1 iyun 2024-cü ildə dayandırılacaq.
Əsas təkmilləşdirmələr:
- V8 mühərriki Chromium 12.4-də istifadə edilən 124 versiyasına yeniləndi. V21 8 mühərrikindən istifadə edən Node.js 11.8 filialı ilə müqayisədə dəyişikliklər arasında qeyd olunur:
- Zibil toplayıcıdan (Kotlin, PHP, Java və s.) istifadə edən proqramlaşdırma dillərində yazılmış proqramların WebAssembly-ə daşınmasını asanlaşdıran WasmGC uzantısına dəstək. WasmGC qeyri-xətti yaddaş ayrılmasından istifadə edə bilən yeni tip strukturlar və massivlər əlavə edir.
- Array.fromAsync() metodu üçün dəstək, asinxron olaraq massiv kimi, təkrarlana bilən və ya asinx təkrarlana bilən obyektdən kopyalanan Array obyektinin yeni nümunəsini qaytarır.
- .map, .filter, .find, .take, .drop, .forEach və .reduce kimi iterator üsulları üçün dəstək.
- Dəyərlər toplusunu təyin edən və kəsişmə, birləşmə, fərq və əlavə kimi ümumi dəst əməliyyatlarını həyata keçirən üsullar təklif edən Set obyekti üçün dəstək.
- Maglev optimallaşdıran JIT kompilyatoru defolt olaraq aktivləşdirilib, çox istifadə olunan JavaScript kodu üçün yüksək performanslı maşın kodunu tez bir zamanda yaratmaq məqsədi daşıyır. Maglev-in aktivləşdirilməsi uzunmüddətli əməliyyatları yerinə yetirməyən qısamüddətli CLI proqramlarını əhəmiyyətli dərəcədə sürətləndirə bilər, məsələn, Jetstrea testini tamamlamaq üçün vaxt 7.5%, Speedometer testi isə 5% azalır.
- HighWaterMark opsiyasının dəyərini 16 KB-dan 65 KB-a qədər artırmaqla axınlarla iş sürətləndirilib (qeydiyyatın buferləşdiyi həddi müəyyən edir). Dəyişiklik yaddaş istehlakının artması ilə nəticələnir, ona görə də məhdud RAM-da işləmək üçün nəzərdə tutulmuş proqramlar setDefaultHighWaterMark() xidmətinə zəng vasitəsilə köhnə dəyəri qaytarmalı ola bilər.
- AbortSignal instansiyasını daha səmərəli etməklə fetch() və test runner API-lərinin təkmilləşdirilmiş performansı. Fayl sistemləri ilə sinxron işləmə ilə bağlı API-lərin performansı yaxşılaşdırılıb.
- JavaScript ESM modullarını (ECMAScript Modulları) sinxron rejimdə yükləmək üçün "tələb ()" çağırışından istifadə etmək üçün eksperimental funksiya təqdim edilmişdir. ESM modulları brauzerlərdə istifadə olunur və Node.js üçün xüsusi CommonJS modullarını əvəz edir. "Tələb ()" vasitəsilə yükləmək üçün ESM modulu sinxron rejimdə (yuxarı səviyyədə gözləmədən) icra edilməlidir. Dəstək “--eksperimental-tələb-modul” bayrağı ilə aktivləşdirilir.
- "--run" əmrindən istifadə edərək package.json faylında müəyyən edilmiş skriptləri işə salmaq üçün eksperimental imkan əlavə edildi "
- “Node –watch” əmri idxal edilmiş fayl dəyişdikdə (məsələn, “node –watch index.js” yerinə yetirildikdə, index.js dəyişdikdə proses avtomatik olaraq yenidən başlayacaq).
- WebSocket API-nin yerli tətbiqi sabitləşərək, WebSocket-ə əlavə asılılıqlar quraşdırmadan müştəri rejimində istifadə etməyə imkan verir.
- Navigator API üçün qismən dəstək əlavə edildi.
- Webstreams API deflate-raw sıxılma formatı üçün dəstək əlavə etdi.
- Fayl yollarının nümunə uyğunlaşdırılması üçün node:fsmodule-a glob və globSync funksiyaları əlavə edildi.
- Yanlış konfiqurasiya edilmiş IPv6 yığınlarının təkmilləşdirilmiş idarə edilməsi. IPv6 əməliyyatı ilə bağlı problemlər zamanı sürətli geri qaytarma üçün Happy Eyeballs alqoritmi tətbiq edilmişdir.
- Util API köhnəlmişdir.
- Yenilənmiş asılılıq versiyaları: 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 to 3.8.0, ada 2.7.7. .
Node.js platforması həm veb tətbiqlərinin server tərəfində dəstəklənməsi, həm də standart klient və server tərəfində şəbəkə proqramlarının yaradılması üçün istifadə edilə bilər. Node.js tətbiqlərinin funksionallığını genişləndirmək üçün, tətbiq edənlər də daxil olmaqla, geniş modul kolleksiyası hazırlanmışdır. serverlər və HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 klientləri, müxtəlif veb çərçivələri ilə inteqrasiya üçün modullar, WebSocket və Ajax işleyiciləri, DBMS-ə (MySQL, PostgreSQL, SQLite, MongoDB) konnektorlar, şablon mühərrikləri, CSS mühərrikləri, kriptoqrafik alqoritmlərin və avtorizasiya sistemlərinin (OAuth) tətbiqləri, XML parserləri.
Çoxlu sayda paralel sorğuları idarə etmək üçün Node.js bloklanmayan hadisə emalına və geri çağırış işləyicilərini müəyyən etməyə əsaslanan asinxron kod icra modelindən istifadə edir. Əlaqələrin multipleksləşdirilməsi üçün dəstəklənən üsullara epoll, kqueue, /dev/poll və select daxildir. Bağlantının multipleksləşdirilməsi üçün Unix sistemlərində libev və Windows-da IOCP-ə əlavə olan libuv kitabxanasından istifadə olunur. Libeio kitabxanası mövzu hovuzu yaratmaq üçün istifadə olunur və c-ares bloklanmayan rejimdə DNS sorğularını yerinə yetirmək üçün inteqrasiya olunur. Bloklamaya səbəb olan bütün sistem çağırışları ip hovuzu daxilində yerinə yetirilir və sonra, siqnal işləyiciləri kimi, öz işlərinin nəticəsini adı açıqlanmayan boru vasitəsilə geri ötürür.
JavaScript kodunun icrası Google tərəfindən hazırlanmış V8 mühərrikinin istifadəsi ilə təmin edilir (bundan əlavə, Microsoft Chakra-Core mühərriki ilə Node.js versiyasını hazırlayır). Özündə Node.js Perl AnyEvent, Ruby Event Machine, Python Twisted çərçivələrinə və Tcl-də hadisələrin həyata keçirilməsinə bənzəyir, lakin Node.js-dəki hadisə dövrəsi tərtibatçıdan gizlədilib və veb proqramda hadisənin işlənməsini xatırladır. brauzerdə işləyir.
Mənbə: opennet.ru
