È stata rilasciata la versione Node.js 24.0.0, una piattaforma per l'esecuzione di applicazioni di rete in JavaScript. Node.js 24.0 è stato classificato come una versione con supporto a lungo termine, ma questo stato sarà assegnato solo a ottobre, dopo aver completato la fase di stabilizzazione. Il supporto per Node.js 24.x durerà fino al 30 aprile 2028. Il supporto per la versione LTS precedente Node.js 22.x continuerà fino ad aprile 2027, mentre per la versione LTS ante precedente 20.x fino ad aprile 2026. Il supporto per la versione LTS 18.x è terminato il 30 aprile 2025 e il supporto per la versione intermedia Node.js 23.x terminerà il 1° giugno 2025.
Miglioramenti principali:
- Nell'API AsyncLocalStorage, la classe AsyncContextFrame è abilitata di default ed è contrassegnata come stabile. AsyncContextFrame implementa un meccanismo più efficiente per il tracciamento del contesto asincrono, consentendo un notevole miglioramento delle prestazioni.
- L'API URLPattern è ora disponibile come oggetto globale, utilizzabile senza necessità di importazione esplicita. URLPattern fornisce funzionalità per verificare la corrispondenza di un URL a un determinato modello, che può essere utilizzato, ad esempio, per l'analisi dei link.
- È stato migliorato e stabilizzato il meccanismo del Permission Model, che consente di limitare l'accesso a determinate risorse durante l'esecuzione (ad esempio, è possibile vietare la creazione di processi figli, limitare l'accesso in scrittura o lettura a specifiche parti del filesystem, disabilitare estensioni). Invece del flag sperimentale "—experimental-permission" per attivare il Permission Model, ora è possibile utilizzare il flag "—permission".
- Sono state ampliate le funzionalità del modulo node:test (test_runner), progettato per creare ed eseguire test in JavaScript che restituiscono risultati nel formato TAP (Test Anything Protocol). Il modulo ora attende automaticamente il completamento dei test annidati senza necessità di utilizzare await.
- Il client HTTP undici è stato aggiornato alla versione 7.x, nella quale sono state migliorate le performance e aggiunto il supporto per nuove funzionalità HTTP.
- Il motore V8 è stato aggiornato alla versione 13.6, utilizzato in Chromium 136. Tra le nuove funzionalità rispetto al rilascio precedente di Node.js, si segnala il supporto per array tipizzati Float16Array, gestione manuale delle risorse, il metodo RegExp.escape (per l'escaping delle stringhe per RegExp), puntatori a 64 bit (Memory64) in WebAssembly, e il metodo Error.isError.
- Il gestore pacchetti NPM è stato aggiornato alla versione 11.
- È stato interrotto il supporto per il compilatore MSVC. Per la compilazione su piattaforma Windows è necessario utilizzare ClangCL.
La piattaforma Node.js può essere utilizzata sia per il supporto server lato Web di applicazioni che per creare normali programmi client e server di rete. Per espandere la funzionalità delle applicazioni Node.js è stata preparata una vasta collezione di moduli, in cui si possono trovare moduli con implementazione server e client HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, moduli per integrazioni con diversi framework web, gestori WebSocket e Ajax, connettori a DBMS (MySQL, PostgreSQL, SQLite, MongoDB), motori di templating, motori CSS, implementazioni di algoritmi crittografici e sistemi di autorizzazione (OAuth), parser XML.
Per gestire un gran numero di richieste parallele, Node.js utilizza un modello asincrono per l'esecuzione del codice, basato sulla gestione degli eventi in modalità non bloccante e sulla definizione dei callback. Tra i metodi supportati per il multiplexing delle connessioni ci sono epoll, kqueue, /dev/poll e select. Per il multiplexing delle connessioni viene utilizzata la libreria libuv, che funge da wrapper per libev su sistemi Unix e per IOCP su Windows. Per creare un pool di thread, viene utilizzata la libreria libeio, mentre le richieste DNS in modalità non bloccante vengono eseguite tramite c-ares. Tutti i sistemi di chiamata che causano blocchi vengono eseguiti all'interno del pool di thread e poi, come i gestori di segnali, restituiscono il risultato del loro lavoro tramite una pipe non denominata.
L'esecuzione del codice JavaScript è garantita attraverso l'uso del motore V8 sviluppato da Google (inoltre, Microsoft sviluppa una variante di Node.js con il motore Chakra-Core). Fondamentalmente, Node.js è simile a framework come Perl AnyEvent, Ruby Event Machine, Python Twisted e all'implementazione degli eventi in Tcl, ma il ciclo di elaborazione degli eventi (event loop) in Node.js è nascosto agli sviluppatori e ricorda la gestione degli eventi in un'app web che funziona nel browser.
Fonte: opennet.ru
