È stata rilasciata Node.js 24.0.0, la piattaforma per l'esecuzione di applicazioni di rete in JavaScript. Node.js 24.0 è classificato come versione a lungo termine, ma questo status sarà conferito solo a ottobre, dopo il completamento della stabilizzazione. Il supporto per Node.js 24.x sarà garantito fino al 30 aprile 2028. Il supporto per la precedente versione LTS Node.js 22.x continuerà fino ad aprile 2027, mentre per la versione LTS 20.x terminerà ad aprile 2026. Il supporto per la versione LTS 18.x è stato interrotto il 30 aprile 2025, mentre il supporto per la versione intermedia Node.js 23.x terminerà il 1 giugno 2025.
Principali miglioramenti:
- Nell'API AsyncLocalStorage è stato introdotto per impostazione predefinita il classe AsyncContextFrame, contrassegnato come stabile. AsyncContextFrame implementa un meccanismo più efficiente per il monitoraggio del contesto asincrono, che consente di migliorare significativamente le prestazioni.
- L'API URLPattern è ora disponibile come oggetto globale, utilizzabile senza importazione esplicita. URLPattern offre funzionalità per la verifica della corrispondenza degli URL a uno specifico schema, che può essere applicato, ad esempio, per l'analisi dei link.
- È stato migliorato e stabilizzato il meccanismo Permission Model, che consente di limitare l'accesso a specifiche risorse durante l'esecuzione (ad esempio, è possibile vietare la creazione di processi figli, limitare l'accesso in scrittura o lettura a determinate parti del filesystem, disabilitare le estensioni). Invece della flag sperimentale «—experimental-permission» per abilitare il Permission Model, ora è possibile utilizzare la flag «—permission».
- Sono state ampliate le funzionalità del modulo node:test (test_runner), progettato per creare ed eseguire test in JavaScript, restituendo il risultato in formato TAP (Test Anything Protocol). Il modulo ora attende automaticamente il completamento dei test annidati senza la necessità di utilizzare await.
- Il client HTTP undici è stato aggiornato alla versione 7.x, che ha migliorato le prestazioni e aggiunto il supporto per nuove funzionalità HTTP.
- Il motore V8 è stato aggiornato alla versione 13.6, utilizzata in Chromium 136. Tra le nuove funzionalità rispetto al precedente rilascio di Node.js, si segnala il supporto per gli array tipizzati Float16Array, la gestione manuale delle risorse, il metodo RegExp.escape (escape delle stringhe per RegExp), i puntatori a 64 bit (Memory64) in WebAssembly, e il metodo Error.isError.
- Il gestore di pacchetti NPM è stato aggiornato alla versione 11.
- È stato interrotto il supporto per il compilatore MSVC. Per compilare sulla piattaforma Windows è necessario utilizzare ClangCL.
La piattaforma Node.js può essere utilizzata sia per il supporto server delle applicazioni web, sia per creare normali programmi di rete client e server. Per espandere le funzionalità delle applicazioni Node.js, è disponibile un'ampia collezione di moduli, in cui è possibile trovare moduli con implementazioni server e client HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, moduli per l'integrazione con vari framework web, gestori WebSocket e Ajax, connettori per database (MySQL, PostgreSQL, SQLite, MongoDB), motori di templating, motori CSS, implementazioni di algoritmi crittografici e sistemi di autorizzazione (OAuth), parser XML.
Per gestire un elevato numero di richieste parallele, Node.js utilizza un modello di esecuzione del codice asincrono basato sul trattamento degli eventi in modalità non bloccante e sulla definizione di callback. Tra i metodi supportati per il multiplexing delle connessioni ci sono epoll, kqueue, /dev/poll e select. La libreria libuv funge da supporto per il multiplexing delle connessioni, operando su libev nei sistemi Unix e su IOCP in Windows. Per creare un pool di thread viene utilizzata la libreria libeio, mentre per eseguire richieste DNS in modalità non bloccante è integrato 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 attraverso una pipe anonima.
L'esecuzione del codice JavaScript è garantita attraverso l'uso del motore V8 sviluppato da Google (inoltre Microsoft sta sviluppando una versione di Node.js con il motore Chakra-Core). Fondamentalmente, Node.js è simile ai framework Perl AnyEvent, Ruby Event Machine, Python Twisted e all'implementazione degli eventi in Tcl, ma il ciclo di elaborazione degli eventi in Node.js è nascosto agli sviluppatori e ricorda l'elaborazione degli eventi in un'app web che funziona nel browser.
Fonte: opennet.ru
