A piattaforma JavaScript Node.js 22.0.0 dispunibule

Node.js 22.0 hè stata liberata, una piattaforma per eseguisce applicazioni di rete in JavaScript. Node.js 22.0 hè classificatu cum'è un ramu di supportu à longu andà, ma questu statutu serà assignatu solu in uttrovi, dopu a stabilizazione. Node.js 22.x serà supportatu finu à u 30 d'aprile di u 2027. U mantenimentu di u ramu LTS precedente di Node.js 20.x durà finu à aprile 2026, è l'annu prima di l'ultimu ramu LTS 18.x finu à aprile 2025. U ramu di staging di Node.js 21.x serà discontinuatu l'1 di ghjugnu 2024.

Principali miglioramenti:

  • U mutore V8 hè stata aghjurnata à a versione 12.4, utilizata in Chromium 124. Trà i cambiamenti cumparatu cù u ramu Node.js 21, chì hà utilizatu u mutore V8 11.8), hè nutatu:
    • Supportu per l'estensione WasmGC, chì simplificà u porting di prugrammi scritti in linguaggi di prugrammazione chì utilizanu un cullettore di basura (Kotlin, PHP, Java, etc.) à WebAssembly. WasmGC aghjusta novi tipi di strutture è array chì ponu utilizà l'allocazione di memoria non lineari.
    • Supportu per u metudu Array.fromAsync (), chì torna asincronamente una nova istanza di un ughjettu Array copiatu da un oggettu iterable array-like, iterable o async.
    • Supportu per i metudi di iteratore cum'è .map, .filter, .find, .take, .drop, .forEach è .reduce.
    • Supportu per un oggettu Set chì definisce una cullizzioni di valori è offre metudi chì implementanu operazioni di set cumuni, cum'è intersezzione, unione, differenza è addizione.
  • U compilatore JIT d'ottimisazione Maglev hè attivatu per difettu, destinatu à generà rapidamente codice macchina d'altu rendiment per codice JavaScript assai utilizatu. L'abilitazione di Maglev pò accelerà significativamente l'applicazioni CLI di corta durata chì ùn facenu micca operazioni à longu andà, per esempiu, u tempu per cumprità a prova Jetstrea hè ridutta da 7.5%, è a prova Speedometer da 5%.
  • U travagliu cù i flussi hè stata accelerata aumentendu u valore di l'opzione highWaterMark da 16 KB à 65 KB (definisce u limitu finu à quale a registrazione hè buffered). U cambiamentu risultatu in un cunsumu di memoria aumentatu, cusì l'applicazioni pensate per eseguisce in RAM limitata pò avè bisognu di vultà à u vechju valore via una chjama à setDefaultHighWaterMark().
  • Prestazione migliurata di l'API fetch() è test runner rendendu l'istanciazione AbortSignal più efficace. U rendiment di l'API in relazione à u travagliu sincronu cù i sistemi di schedari hè statu migliuratu.
  • Una funzione sperimentale hè stata furnita per utilizà a chjama "require ()" per carricà i moduli JavaScript ESM (Moduli ECMAScript) in modu sincronu. I moduli ESM sò usati in i navigatori è rimpiazzanu i moduli CommonJS specifichi per Node.js. Per carica via "require ()", u modulu ESM deve esse eseguitu in modu sincronu (senza aspittà à u livellu superiore). U supportu hè attivatu via a bandiera "--experimental-require-module".
  • Aggiunta capacità sperimentale per eseguisce scripts definiti in u schedariu package.json cù u cumandimu "--run". "
  • U cumandamentu "node -watch" hè statu spustatu à a categuria stabile cù l'implementazione di un modu di vigilanza chì assicura chì u prucessu hè riavviatu quandu u schedariu impurtatu cambia (per esempiu, se "node -watch index.js" hè eseguitu, u u prucessu serà riavviatu automaticamente quandu index.js cambia).
  • L'implementazione nativa di l'API WebSocket hè stata stabilizzata, chì permettenu WebSocket per esse utilizatu in modu di cliente senza installà dipendenze supplementari.
  • Aggiuntu supportu parziale per l'API Navigator.
  • L'API Webstreams hà aghjustatu supportu per u formatu di compressione deflate-raw.
  • Aghjunghjite funzioni glob è globSync à node:fsmodule per a cuncordanza di mudelli di percorsi di file.
  • Gestione mejorata di stacks IPv6 cunfigurati incorrectamente. Implementatu l'algoritmu Happy Eyeballs per un rollback rapidu in casu di prublemi cù l'operazione IPv6.
  • L'API util hè stata obsoleta.
  • Versioni di dependenza aghjurnata: 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 è undici. .

A piattaforma Node.js pò esse usata sia per u mantenimentu di u servitore di l'applicazioni Web sia per a creazione di prugrammi di rete di client è servitore regulare. Per espansione a funziunalità di l'applicazioni per Node.js, hè stata preparata una grande cullizzioni di moduli, in quale pudete truvà moduli cù l'implementazione di HTTP, SMTP, XMPP, DNS, FTP, IMAP, servitori POP3 è clienti, moduli per integrazione. cù diversi frameworks web, gestori WebSocket è Ajax, connettori DBMS (MySQL, PostgreSQL, SQLite, MongoDB), mutori di mudelli, motori CSS, implementazioni di algoritmi criptografici è sistemi d'autorizazione (OAuth), parsers XML.

Per trattà un gran numaru di richieste parallele, Node.js usa un mudellu di esecuzione di codice asincronu basatu annantu à u processamentu di l'eventi senza bloccu è definisce i gestori di callback. I metudi supportati per e cunnessione multiplexing include epoll, kqueue, /dev/poll, è select. Per u multiplexing di cunnessione, a libreria libuv hè aduprata, chì hè un add-on à libev in sistemi Unix è à IOCP in Windows. A libreria libeio hè aduprata per creà un pool di fili, è c-ares hè integratu per eseguisce dumande DNS in un modu senza bloccu. Tutte e chjame di u sistema chì causanu u bloccu sò eseguite in u pool di fili è dopu, cum'è i gestori di signali, passanu u risultatu di u so travagliu per un tubu senza nome.

Esecuzione di codice JavaScript hè assicurata per l'usu di u mutore V8 sviluppatu da Google (in più, Microsoft sviluppa una versione di Node.js cù u mutore Chakra-Core). In u so core, Node.js hè simile à u Perl AnyEvent, Ruby Event Machine, Python Twisted frameworks è l'implementazione di l'avvenimenti in Tcl, ma u ciclu di l'avvenimentu in Node.js hè oculatu da u sviluppatore è s'assumiglia à l'elaborazione di l'avvenimenti in una applicazione web. in esecuzione in u navigatore.

Source: opennet.ru

Add a comment