Galima JavaScript platforma Node.js 22.0.0

Išleista Node.js 22.0 – platforma, skirta tinklo programoms paleisti JavaScript. Node.js 22.0 priskiriamas ilgalaikės paramos šakai, tačiau ši būsena bus priskirta tik spalį, po stabilizavimo. Node.js 22.x bus palaikomas iki 30 m. balandžio 2027 d. Ankstesnio LTS filialo Node.js 20.x priežiūra truks iki 2026 m. balandžio mėn., o užpernai LTS filialo 18.x – iki 2025 m. balandžio mėn. 21 m. birželio 1 d. „Node.js 2024.x“ sustojimo atšaka bus nutraukta.

Pagrindiniai patobulinimai:

  • V8 variklis buvo atnaujintas į 12.4 versiją, naudojamą Chromium 124. Tarp pakeitimų, palyginti su Node.js 21 šaka, kurioje buvo naudojamas V8 11.8 variklis), pažymima:
    • Palaikomas WasmGC plėtinys, kuris supaprastina programų, parašytų programavimo kalbomis, kurios naudoja šiukšlių rinktuvą (Kotlin, PHP, Java ir kt.), perkėlimą į WebAssembly. WasmGC prideda naujų tipų struktūrų ir masyvų, kurie gali naudoti nelinijinį atminties paskirstymą.
    • Metodo Array.fromAsync() palaikymas, kuris asinchroniškai grąžina naują masyvo objekto egzempliorių, nukopijuotą iš masyvo tipo, kartojamo arba asinchroninio iteruojamo objekto.
    • Iteratoriaus metodų, tokių kaip .map, .filter, .find, .take, .drop, .forEach ir .reduce, palaikymas.
    • „Set“ objekto palaikymas, kuris apibrėžia reikšmių rinkinį ir siūlo metodus, įgyvendinančius įprastas rinkinio operacijas, tokias kaip sankirta, sąjunga, skirtumas ir pridėjimas.
  • „Maglev“ optimizuojantis JIT kompiliatorius yra įjungtas pagal numatytuosius nustatymus, skirtas greitai generuoti didelio našumo mašininį kodą intensyviai naudojamam „JavaScript“ kodui. Įjungus Maglev galima žymiai pagreitinti trumpalaikes CLI programas, kurios neatlieka ilgalaikių operacijų, pavyzdžiui, laikas atlikti Jetstrea testą sutrumpėja 7.5%, o spidometro testą - 5%.
  • Darbas su srautais buvo paspartintas padidinus highWaterMark parinkties reikšmę nuo 16 KB iki 65 KB (apibrėžia ribą, iki kurios įrašomas buferis). Dėl pakeitimo padidėja atminties sąnaudos, todėl programoms, skirtoms veikti ribotoje RAM, gali tekti grąžinti senąją reikšmę iškvietus setDefaultHighWaterMark().
  • Patobulintas „fetch()“ ir „test runner“ API veikimas, nes „AbortSignal“ egzistavimas tapo efektyvesnis. Patobulintas API, susijusių su sinchroniniu darbu su failų sistemomis, našumas.
  • Buvo pateikta eksperimentinė funkcija, skirta naudoti „require()“ iškvietimą, norint įkelti „JavaScript“ ESM modulius (ECMAScript modulius) sinchroniniu režimu. ESM moduliai naudojami naršyklėse ir pakeičia „CommonJS“ modulius, būdingus Node.js. Norint įkelti naudojant „require()“, ESM modulis turi būti vykdomas sinchroniniu režimu (nelaukiant aukščiausiu lygiu). Palaikymas įgalinamas naudojant žymą „--experimental-require-module“.
  • Pridėta eksperimentinė galimybė paleisti scenarijus, apibrėžtus pakete.json faile, naudojant komandą "--run". “
  • Komanda „node –watch“ buvo perkelta į stabilią kategoriją, įdiegus stebėjimo režimą, kuris užtikrina, kad procesas būtų paleistas iš naujo, kai pasikeičia importuotas failas (pavyzdžiui, jei vykdomas „node –watch index.js“, procesas bus automatiškai paleistas iš naujo, kai pasikeis index.js).
  • Vietinis WebSocket API diegimas buvo stabilizuotas, todėl WebSocket galima naudoti kliento režimu neįdiegiant papildomų priklausomybių.
  • Pridėtas dalinis Navigator API palaikymas.
  • „Webstreams“ API papildė „deflate-raw“ glaudinimo formato palaikymą.
  • Prie node:fsmodule pridėtos funkcijos glob ir globSync, kad būtų galima suderinti failų kelius.
  • Patobulintas neteisingai sukonfigūruotų IPv6 stekelių tvarkymas. Įdiegtas „Happy Eyeballs“ algoritmas, skirtas greitai atšaukti, jei kyla problemų dėl IPv6 veikimo.
  • Util API buvo nebenaudojama.
  • Atnaujintos priklausomybės versijos: 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 iki 3.8.0, ada un2.7.7 6.6.0. .

„Node.js“ platforma gali būti naudojama tiek žiniatinklio programų palaikymui serveryje, tiek standartinėms kliento ir serverio tinklo programoms kurti. Siekiant išplėsti „Node.js“ programų funkcionalumą, parengta didelė modulių kolekcija, įskaitant ir tuos, kurie įgyvendina serveriai ir HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 klientai, moduliai integracijai su įvairiomis žiniatinklio sistemomis, „WebSocket“ ir „Ajax“ tvarkyklės, jungtys su DBVS (MySQL, PostgreSQL, SQLite, MongoDB), šablonų varikliai, CSS varikliai, kriptografinių algoritmų ir autorizacijos sistemų (OAuth) įgyvendinimas, XML analizatoriai.

Norėdamas apdoroti didelį skaičių lygiagrečių užklausų, „Node.js“ naudoja asinchroninį kodo vykdymo modelį, pagrįstą neblokuojančiu įvykių apdorojimu ir atgalinio iškvietimo tvarkyklėmis. Palaikomi ryšio multipleksavimo metodai: „epoll“, „kqueue“, „/dev/poll“ ir „select“. Ryšio multipleksavimui naudojama „libuv“ biblioteka, kuri yra „libev“ bibliotekos „Unix“ sistemose ir „IOCP“ bibliotekos „IOCP“ bibliotekoje rinkinys. Windows„libeio“ biblioteka naudojama gijų telkiniui sukurti, o „c-ares“ yra integruota DNS užklausoms atlikti neblokuojančiu režimu. Visi blokuojantys sistemos iškvietimai vykdomi gijų telkinyje ir tada, kaip ir signalų tvarkyklės, grąžina savo rezultatus per neįvardintą kanalą.

JavaScript kodo vykdymas užtikrinamas naudojant Google sukurtą V8 variklį (be to, Microsoft kuria Node.js versiją su Chakra-Core varikliu). Iš esmės Node.js yra panašus į Perl AnyEvent, Ruby Event Machine, Python Twisted sistemas ir įvykių diegimą Tcl, tačiau Node.js įvykių ciklas yra paslėptas nuo kūrėjo ir primena įvykių apdorojimą žiniatinklio programoje. veikia naršyklėje.

Šaltinis: opennet.ru

Pirkite patikimą prieglobą svetainėms su DDoS apsauga, VPS VDS serveriais 🔥 Įsigykite patikimą svetainių talpinimą su DDoS apsauga, VPS VDS serveriais | ProHoster