Objavil se je Node.js 24.0.0, platforma za izvajanje omrežnih aplikacij v JavaScriptu. Node.js 24.0 je razvrščen med različice z dolgoročnim podporo, vendar bo ta status dodeljen šele oktobra, po stabilizaciji. Podpora za Node.js 24.x bo trajala do 30. aprila 2028. Podpora prejšnje LTS različice Node.js 22.x bo trajala do aprila 2027, prejšnje LTS različice 20.x pa do aprila 2026. Podpora za LTS različico 18.x se je končala 30. aprila 2025, podpora za vmesno različico Node.js 23.x pa se bo končala 1. junija 2025.
Glavne izboljšave:
- V API AsyncLocalStorage se privzeto uporablja razred AsyncContextFrame, ki je označen kot stabilen. AsyncContextFrame implementira učinkovit mehanizem za sledenje asinhronemu kontekstu, kar omogoča občutno izboljšanje zmogljivosti.
- API URLPattern je zdaj na voljo kot globalni objekt, ki ga je mogoče uporabiti brez izrecnega uvoza. URLPattern ponuja možnosti za preverjanje, ali URL ustreza določenemu vzorcu, kar je na primer mogoče uporabiti za razčlenitev povezav.
- Mehanizem Permission Model je izboljšan in stabiliziran, kar omogoča omejevanje dostopa do določenih virov med izvajanjem (na primer, lahko prepovemo ustvarjanje podprocesov, omejimo zapis ali branje do določenih delov datotečnega sistema, onemogočimo vtičnike). Namesto eksperimentalne zastavice '—experimental-permission' se zdaj uporablja zastavica '—permission' za vključitev Permission Model.
- Možnosti modula node:test (test_runner) so razširjene, namenjenega za ustvarjanje in izvajanje testov v JavaScriptu, ki vračajo rezultate v formatu TAP (Test Anything Protocol). Modul zdaj samodejno čaka na zaključek gnezdenih testov brez potrebe po uporabi await.
- HTTP odjemalec undici je nadgrajen na veje 7.x, pri čemer je izboljšana zmogljivost in dodana podpora novim funkcionalnostim HTTP.
- Motor V8 je nadgrajen na različico 13.6, ki se uporablja v Chromu 136. Med novimi funkcijami v primerjavi s prejšnjo izdajo Node.js je podpora tipiziranim tabelam Float16Array, ročno upravljanje z viri, metoda RegExp.escape (bežanje nizov za RegExp), 64-bitni kazalci (Memory64) v WebAssembly in metoda Error.isError.
- Upravitelj paketov NPM je nadgrajen na različico 11.
- Podpora za prevajalnik MSVC je prenehala. Za prevajanje na platformi Windows je treba uporabiti ClangCL.
Platforma Node.js se lahko uporablja tako za strežniško spremljanje delovanja spletnih aplikacij kot tudi za ustvarjanje običajnih odjemalskih in strežniških omrežnih programov. Za razširitev funkcionalnosti aplikacij za Node.js je pripravljena obsežna zbirka modulov, v kateri lahko najdete module z implementacijo. strežnikov i HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 klijenata, module za integraciju sa raznim web okvirima, WebSocket i Ajax obradi, konektore za baze podataka (MySQL, PostgreSQL, SQLite, MongoDB), predloške, CSS motore, implementacije kriptoalgoritama i sistema autorizacije (OAuth), XML parsera.
Za obdelavo velikega števila paralelnih zahtev Node.js uporablja asinhronski model izvajanja kode, ki temelji na obdelavi dogodkov v neblokirnem načinu in določanju callback obdelovalcev. Kot načini multiplexiranja povezav so podprti takšni metodi, kot sta epoll, kqueue, /dev/poll in select. Za multiplexiranje povezav se uporablja knjižnica libuv, ki je nadgradnja nad libev v sistemih Unix in nad IOCP v Windows. Za ustvarjanje skladišča nit (thread pool) se uporablja knjižnica libeio, za izvajanje DNS-poizvedb v neblokirnem načinu pa je integriran c-ares. Vsi sistemski klici, ki povzročajo blokado, se izvajajo znotraj skladišča nit in nato, tako kot obdelovalci signalov, vračajo rezultat svojega dela nazaj preko neimenovanega kanala (pipe).
Izvajanje JavaScript kode je omogočeno z vključitvijo motorja V8, ki ga je razvila družba Google (poleg tega Microsoft razvija različico Node.js z motorjem Chakra-Core). Node.js v bistvu spominja na okvire Perl AnyEvent, Ruby Event Machine, Python Twisted in implementacijo dogodkov v Tcl, vendar je dogodek obravnavan v Node.js skrit pred razvijalcem in spominja na obravnavo dogodkov v spletnem aplikaciji, ki deluje v brskalniku.
Izvor: opennet.ru
