Saadaval on JavaScripti platvorm Node.js 22.0.0

Ilmus Node.js 22.0, platvorm netirakenduste käitamiseks JavaScriptis. Node.js 22.0 kuulub pikaajalise toe harude alla, kuid see staatus omistatakse alles oktoobris stabiliseerimise pärast. Node.js 22.x toetust osutatakse kuni 30. aprillini 2027. Eelneva LTS-haru Node.js 20.x toimetamine kestab kuni aprillini 2026 ja eelneva LTS-haru 18.x kuni aprillini 2025. Vahepealse haru Node.js 21.x toimetamine lõpetatakse 1. juunil 2024.

Peamised täiustused:

  • V8 mootori versioon on uuendatud versioonile 12.4, mida kasutatakse Chromiumis 124. Node.js 21 haruga võrreldes, kus kasutati V8 mootori versiooni 11.8, on järgmised erinevused:
    • Toetatakse WasmGC laiendust, mis lihtsustab WebAssembly programmide portimist, mis on kirjutatud prügi kogumisega keeltes (nt Kotlin, PHP, Java jne). WasmGC lisab uusi struktuuri ja massiivide tüüpe, mille puhul on võimalik rakendada mitte-lineaarset mälu jaotust.
    • Toetatakse meetodit Array.fromAsync(), mis asünkroonselt tagastab uue Array objekti eksemplari, mille on kopeeritud massiividest, mis sarnanevad massiiviga, loetletud (iterable) või asünkroonselt loetletud (async iterable).
    • Toetatakse iteraatoritega töötamise meetodeid, nagu .map, .filter, .find, .take, .drop, .forEach ja .reduce.
    • Toetatakse Set objekti, mis määratleb väärtuste kogumi ning pakub meetodeid, mis teostavad tüüpilisi kogudega töötamise operatsioone, nagu lõike, ühendused, vahe ja täiendused.
  • Sisseehitatud on vaikimisi optimeeriv JIT-kompilaator Maglev, mis on suunatud kiire kõrgjõudlusega masinkoodi genereerimisele aktiivselt kasutatava JavaScripti koodi jaoks. Maglevi lubamine võimaldab märgatavalt kiirendada lühiajaliste CLI rakenduste tööd, mis ei soorita pikaajalisi operatsioone, näiteks Jetstreami testide läbimise aeg väheneb 7.5%, samas Speedometeri testide puhul 5%.
  • Ahnud töövoogude käsitlemist on kiirendatud, suurendades highWaterMark valiku väärtust 16 KB-lt 65 KB-le (määrab limiidi, mille ulatuses salvestamine toimub). Muutus toob kaasa suurema mälutarbimise, seega võib rakendustel, mis on mõeldud piiratud RAM-i kasutamiseks, olla vajalik taastada vana väärtus läbi setDefaultHighWaterMark() kõne.
  • API fetch() ja test runner'i jõudlus on paranenud AbortSignal'i eksemplaride tõhusama loomise tõttu. Jõudluse parandamine on toimunud API-des, mis on seotud failisüsteemidega töötamisega.
  • Eksperimentaalsena on võimalik kasutada 'require()' kutsumist ESM (ECMAScript Modules) JavaScripti moodulite sünkroonselt laadimiseks. ESM-mooduleid kasutatakse brauserites ja need asendavad Node.js spetsiifilisi CommonJS mooduleid. Mooduli laadimiseks 'require()' kaudu peab ESM-moodul olema sünkroonselt täidetud (ilma await'ita ülemisel tasemel). Tugi lülitatakse sisse lipu '—experimental-require-module' kaudu.
  • Eksperimentaalselt on lisatud võimalus käivitada skripte, mis on määratud package.json failis, kasutades käsku '—run '.
  • Komand 'node —watch' on muudetud stabiilseks, rakendades jälgimisrežiimi, mis tagab protsessi taaskäivitamise imporditud faili muutumisel (näiteks 'node —watch index.js' käivitamisel taaskäivitub protsess automaatselt, kui index.js failis on muudatusi).
  • Sisseehitatud WebSocket API on stabiliseeritud, võimaldades kasutada WebSocket'i kliendirežiimis, ilma täiendavate sõltuvuste installimiseta.
  • API Navigator'i osaline tugi on lisatud.
  • Webstreams API-s on lisatud deflate-raw tihendamisformaadi tugi.
  • Moodulisse node:fsmodule on lisatud funktsioonid glob ja globSync failiteede mustri järgi sobitamiseks.
  • IPv6 vale konfigureerimise töötlemine on paranenud. On rakendatud Happy Eyeballs algoritmi, et kiiresti tagasi lülituda, kui IPv6-ga on probleeme.
  • API util on kuulutatud vananenuks.
  • Sõltuvuste versioonid on uuendatud: 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 ja undici 6.6.0.

Node.js platvormi saab kasutada nii veebirakenduste serveripoolseks toe tagamiseks kui ka tavaliste klient-serveri võrgurakenduste loomiseks. Node.js jaoks on välja töötatud suur moodulite kogumik, kust leiate mooduleid, mis hõlmavad serverid HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 kliente, mooduleid erinevate veebiraamistike integreerimiseks, WebSocket ja Ajax töötlejat, andmebaasi ühendusi (MySQL, PostgreSQL, SQLite, MongoDB), malligeneraatorid, CSS-mootorid, krüptoalgoritmide rakendused ja autentimissüsteemid (OAuth), XML-parsereid.

Paljude paralleelsete päringute töötlemiseks kasutab Node.js asünkroonset koodi käivitamise mudelit, mis põhineb mitteblokeeriva sündmuste töötlemisel ja tagasiside töötlejate määratlemisel. Ühenduste multiplexerimise meetoditeks on toetatud näiteks epoll, kqueue, /dev/poll ja select. Ühenduste multiplexerimiseks kasutatakse raamatukogu libuv, mis on süsteemides Unix libev-i ja Windowsis IOCP ülemaailmne kiht. Kiiruseteemade basseini (thread pool) loomiseks kasutatakse raamatukogu libeio ning mitteblokeeriva DNS-päringute täitmiseks on integreeritud c-ares. Kõik süsteemikutsed, mis põhjustavad blokeerimist, täidetakse teemapools ja seejärel edastavad tulemuse töötluse tagasi anonüümsesse kanali (pipe) kaudu, sarnaselt signaali töötlejatega.

JavaScripti koodi täitmine toimub Google'i arendatud V8 mootori kaudu (lisaks arendab Microsoft Node.js varianti Chakra-Core mootori abil). Node.js on olemuselt sarnane Perl AnyEvent, Ruby Event Machine, Python Twisted ja Tcl'i sündmustöötluse raamistikuga, kuid Node.js sündmustöötluse tsükkel on arendajate eest peidetud ja meenutab sündmustöötlust veebirakenduses, mis töötab brauseris.

Allikas: opennet.ru

Osta usaldusväärne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid 🔥 Osta usaldusväärne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid - ProHoster