Le novità Node.js 25.9.0
Le novità Node.js 25.9.0
Il 1° aprile 2026 è stata rilasciata la versione 25.9.0 di Node.js, classificata come “Current”, ovvero la linea di rilascio più aggiornata e tecnologicamente avanzata della piattaforma. Questa release porta con sé miglioramenti significativi in aree cruciali per lo sviluppo moderno: il test runner, la crittografia, gli stream, le Single Executable Applications (SEA) e la REPL. In questo articolo analizziamo nel dettaglio tutte le novità, con esempi pratici di codice e indicazioni su come sfruttarle al meglio nei progetti aziendali.
Indice dei contenuti – Le novità Node.js 25.9.0
- Cos’è Node.js 25.9.0 e perché aggiornarsi
- Test Runner: nuova API MockModuleOptions.exports
- AsyncLocalStorage: supporto agli using scopes
- Nuova opzione CLI –max-heap-size
- Crittografia avanzata: TurboSHAKE e KangarooTwelve
- REPL: gestione degli errori personalizzabile e rimozione del modulo domain
- Single Executable Applications (SEA): code cache per ESM
- stream/iter: la nuova implementazione sperimentale
- Altre novità degne di nota
- Best practice: pro e contro di Node.js 25.9.0
- Conclusioni e formazione continua
1. Cos’è Node.js 25.9.0 e perché aggiornarsi
Node.js è l’ambiente di runtime JavaScript lato server più diffuso al mondo, basato sul motore V8 di Google Chrome. Il progetto segue un ciclo di rilascio ben definito: le versioni con numero dispari (come la 25) sono “Current”,le più recenti, mentre quelle con numero pari diventano LTS (Long Term Support), garantendo stabilità per 30 mesi.
La versione 25.9.0 è stata rilasciata il 1° aprile 2026 da Antoine du Hamel (@aduh95) e include miglioramenti SEMVER-MINOR in aree chiave. Aggiornare alla versione Current permette agli sviluppatori di sperimentare le funzionalità più recenti e prepararsi alla futura versione LTS 26.x, attesa nella seconda metà del 2026.
2. Test Runner: nuova API MockModuleOptions.exports
La novità principale di questa release riguarda il Test Runner integrato di Node.js. Le precedenti opzioni MockModuleOptions.defaultExport e MockModuleOptions.namedExports sono state unificate in un’unica proprietà: MockModuleOptions.exports. Questa semplificazione allinea Node.js agli standard degli altri test runner del mercato (come Jest o Vitest) e rende il codice più leggibile e manutenibile.
Esempio pratico — prima (vecchia API):
// Prima della 25.9.0
import { mock } from 'node:test';
mock.module('./mio-modulo.js', {
defaultExport: () => 'valore di default',
namedExports: {
miaFunzione: () => 42
}
});
Esempio pratico — dopo (nuova API unificata):
// Con Node.js 25.9.0
import { mock } from 'node:test';
mock.module('./mio-modulo.js', {
exports: {
default: () => 'valore di default', // export default
miaFunzione: () => 42 // named export
}
});
Per migrare automaticamente il codice esistente, il team Node.js mette a disposizione uno strumento di codemod che aggiorna il codice in modo automatico:
npx codemod @nodejs/mock-module-exports
3. AsyncLocalStorage: supporto agli using scopes – Le novità Node.js 25.9.0
Il modulo async_hooks introduce il supporto agli “using scopes” per AsyncLocalStorage, grazie alla proposta ECMAScript Explicit Resource Management (Stage 4). Questo permette di gestire il contesto asincrono con la sintassi using, garantendo che le risorse vengano sempre rilasciate correttamente, anche in caso di eccezioni.
import { AsyncLocalStorage } from 'node:async_hooks';
const storage = new AsyncLocalStorage();
// Con il nuovo supporto 'using'
function elaboraRichiesta(datiUtente) {
using ctx = storage.run({ utente: datiUtente }, () => {
// Il contesto viene rilasciato automaticamente
// al termine del blocco, anche in caso di errore
return eseguiOperazione();
});
}
Questo pattern è particolarmente utile nelle applicazioni web con molte richieste concorrenti, dove la gestione esplicita del contesto riduce memory leak e bug difficili da diagnosticare.
4. Nuova opzione CLI –max-heap-size
La nuova opzione da riga di comando –max-heap-size consente di specificare direttamente la dimensione massima dell’heap di V8, senza dover ricorrere alla sintassi più verbosa –max-old-space-size. Questo è particolarmente utile in ambienti containerizzati (Docker, Kubernetes) dove il controllo della memoria è fondamentale.
# Prima: sintassi più verbosa
node --max-old-space-size=4096 server.js
# Ora: sintassi più chiara e diretta
node --max-heap-size=4096 server.js
# Utile nei Dockerfile:
# CMD ["node", "--max-heap-size=2048", "dist/index.js"]
5. Crittografia avanzata: TurboSHAKE e KangarooTwelve – Le novità Node.js 25.9.0
Il modulo crypto amplia il supporto alla Web Cryptography API con due nuovi algoritmi di hashing derivati dalla famiglia Keccak: TurboSHAKE e KangarooTwelve. Si tratta di funzioni di hash estendibili (XOF – Extendable Output Functions) ad alte prestazioni, standardizzate dal NIST e ideali per scenari che richiedono elevata velocità di hashing, come blockchain, sistemi di verifica dell’integrità e protocolli crittografici moderni.
import { subtle } from 'node:crypto';
// Esempio con TurboSHAKE128
const encoder = new TextEncoder();
const data = encoder.encode('Dati da verificare');
const hash = await subtle.digest(
{ name: 'TurboSHAKE128', outputLength: 32 },
data
);
console.log(new Uint8Array(hash));
Questa novità è rilevante per le aziende che lavorano in ambito fintech, healthcare o sicurezza informatica, dove l’adozione di algoritmi crittografici moderni e certificati è un requisito normativo.
6. REPL: gestione degli errori personalizzabile e rimozione del modulo domain
La REPL (Read-Eval-Print Loop), la shell interattiva di Node.js, riceve due aggiornamenti importanti in questa release:
- Gestione degli errori personalizzabile: è ora possibile fornire una funzione personalizzata per la gestione degli errori nella REPL, utile per strumenti di sviluppo avanzati e ambienti interattivi custom.
- Rimozione della dipendenza da node:domain: il modulo domain, da tempo deprecato, viene rimosso dalla REPL. Questo migliora la stabilità e riduce il technical debt della codebase.
import repl from 'node:repl';
// Esempio con error handler personalizzato
const server = repl.start({
prompt: 'mia-app> ',
// Nuovo in 25.9.0: gestione errori custom
handleError: (err, repl) => {
console.error(`[ERRORE CUSTOM] ${err.message}`);
// log su file, Sentry, ecc.
}
});
7. Single Executable Applications (SEA): code cache per ESM – Le novità Node.js 25.9.0
Le Single Executable Applications (SEA) permettono di distribuire un’applicazione Node.js come un singolo file eseguibile, senza richiedere l’installazione di Node.js sul sistema target. Con la 25.9.0, il supporto alla code cache viene esteso anche agli entry point ESM (ECMAScript Modules), riducendo significativamente i tempi di avvio delle applicazioni distribuite come SEA.
# sea-config.json
{
"main": "dist/app.mjs", // Entry point ESM (novità 25.9.0)
"output": "sea-prep.blob",
"useCodeCache": true // Abilita la code cache per avvio rapido
}
# Processo di build:
node --experimental-sea-config sea-config.json
# Poi iniettare il blob nell'eseguibile Node.js
Questo miglioramento è molto utile per le aziende che distribuiscono tool da riga di comando, microservizi containerizzati o applicazioni desktop basate su Node.js.
8. stream/iter: la nuova implementazione sperimentale
Node.js 25.9.0 introduce una nuova implementazione sperimentale stream/iter, accessibile tramite il percorso node:stream/iter. Questa API è progettata per lavorare nativamente con gli iteratori asincroni di JavaScript, rendendo più fluida e leggibile la gestione dei dati in streaming.
import { map, filter, take } from 'node:stream/iter'; // sperimentale
// Generatore asincrono come sorgente dati
async function* generaDati() {
for (let i = 0; i < 100; i++) {
yield { id: i, valore: Math.random() * 100 };
}
}
// Pipeline funzionale con stream/iter
const risultati = take(
filter(
map(generaDati(), item => ({ ...item, elaborato: true })),
item => item.valore > 50
),
10 // prendi solo i primi 10 risultati
);
for await (const item of risultati) {
console.log(item);
}
Poiché l’API è ancora sperimentale, si raccomanda di non utilizzarla in ambienti di produzione critici senza valutarne la stabilità ad ogni aggiornamento di Node.js.
9. Altre novità degne di nota
Oltre alle funzionalità principali, la release 25.9.0 include una serie di miglioramenti trasversali:
- npm aggiornato alla versione 11.12.1, con correzioni di bug e miglioramenti alle prestazioni.
- SQLite aggiornato alla versione 3.51.3, migliorando l’affidabilità del modulo node:sqlite integrato.
- Compatibilità con OpenSSL 4.0: il sorgente è stato aggiornato per supportare la compilazione con OpenSSL 4.0, preparando Node.js ai futuri standard di sicurezza.
- Deprecazione di module.register() (DEP0205): chi utilizza questa API per i customization hooks dovrebbe pianificare la migrazione.
- Performance migliorata del Buffer: ottimizzazioni a basso livello per operazioni multiple su Buffer, con impatto positivo su applicazioni che manipolano stream binari.
- Miglioramento delle prestazioni degli EventEmitter: evitato il clone dell’array dei listener ad ogni emit, riducendo l’overhead nelle applicazioni event-driven.
- Aggiornamento certificati radice a NSS 3.121: tutti i certificati TLS utilizzati internamente sono stati aggiornati alle versioni più recenti.
- Diagnostics Channel per Web Locks: aggiunta visibilità nei canali diagnostici per il Web Locks API, utile per il debugging avanzato.
- util.styleText con alias per i colori: la funzione di utility per colorare l’output del terminale supporta ora alias dei colori più leggibili.
10. Best practice: pro e contro di Node.js 25.9.0
Prima di adottare Node.js 25.9.0 in un progetto, è importante valutarne vantaggi e limitazioni in modo obiettivo.
Punti di forza (PRO)
- API di testing più coerente: la nuova MockModuleOptions.exports riduce la curva di apprendimento per i nuovi sviluppatori e allinea il test runner nativo agli standard del mercato.
- Crittografia post-quantistica: TurboSHAKE e KangarooTwelve preparano le applicazioni ai requisiti di sicurezza del futuro.
- Migliori performance: ottimizzazioni a Buffer, EventEmitter e URL parsing (simdutf per Ada) migliorano concretamente i tempi di risposta.
- Supporto ESM maturo: code cache per SEA con ESM e fix di bug nel resolver ESM rendono i moderni moduli JavaScript più affidabili.
- Riduzione del debito tecnico: eliminazione della dipendenza da node:domain nella REPL e aggiornamento delle dipendenze interne (simdjson 4.5.0, ngtcp2 1.21.0).
- Controllo memoria semplificato: –max-heap-size semplifica la configurazione in ambienti cloud e containerizzati.
Limitazioni (CONTRO)
- Non è una release LTS: la versione 25.x è “Current” e non riceverà supporto a lungo termine. Per progetti di produzione critici è preferibile Node.js 24.x LTS.
- Alcune API ancora sperimentali: stream/iter è contrassegnata come sperimentale e potrebbe subire cambiamenti breaking in release future.
- Breaking change nel test runner: chi ha codice esistente con MockModuleOptions.defaultExport o namedExports deve aggiornarlo (anche se esiste il codemod automatico).
- Deprecazione di module.register(): le applicazioni che usano questa API per i customization hooks devono pianificare una migrazione.
- Compatibilità con pacchetti legacy: alcuni pacchetti npm di terze parti potrebbero non essere ancora compatibili con Node.js 25.x. Verificare sempre la compatibilità prima del deploy.
Raccomandazione: per ambienti di produzione stabili, valutare l’adozione di Node.js 24.x LTS. Utilizzare la 25.9.0 per lo sviluppo attivo, sperimentazione di nuove funzionalità e per prepararsi alla prossima LTS.
Forma il tuo team con il Corso Node.js di InnovaFormazione
Hai un team di sviluppatori che deve aggiornarsi su Node.js e restare al passo con le ultime versioni? InnovaFormazione offre un corso professionale dedicato a Node.js, pensato sia per sviluppatori che vogliono partire dalle basi sia per chi ha già esperienza e vuole approfondire le funzionalità avanzate come quelle introdotte nella 25.9.0.
Scopri il corso: Corso Node.JS per aziende
Il corso copre l’intero ecosistema Node.js: architettura event-driven, moduli ES e CommonJS, API HTTP, stream, test runner integrato, crittografia, gestione degli errori e molto altro. Il percorso formativo è erogato da docenti esperti con esperienza pratica in progetti enterprise, con esercitazioni su casi reali.
Formazione finanziata con Fondimpresa
Le aziende aderenti a Fondimpresa possono accedere alla formazione finanziata dei propri dipendenti, abbattendo significativamente i costi della formazione tecnica. Innovaformazione supporta le aziende in tutto l’iter burocratico per accedere ai fondi interprofessionali: dalla pianificazione del piano formativo alla rendicontazione finale.
Investire nella formazione continua degli sviluppatori non è più un’opzione: è una necessità competitiva. Con Fondimpresa, la formazione di qualità diventa accessibile a tutte le imprese, anche le PMI.
11. Conclusioni: il mercato evolve, il tuo team deve stare al passo
Node.js 25.9.0 è una release che dimostra come la piattaforma sia in costante e rapida evoluzione. In pochi mesi vengono introdotti miglioramenti all’API di testing, nuovi algoritmi crittografici, ottimizzazioni delle performance, funzionalità per la distribuzione di eseguibili standalone e nuovi paradigmi per la gestione degli stream. Restare aggiornati non è più solo una questione di curiosità tecnica: è una necessità strategica per le aziende che vogliono rimanere competitive.
Il mercato dello sviluppo software nel 2026 è caratterizzato da un ritmo di cambiamento senza precedenti. Framework, runtime, linguaggi di programmazione e best practice si aggiornano con cadenza mensile. In questo contesto, l’unico modo per mantenere il proprio team sviluppatori competitivo, motivato e produttivo è investire nella formazione continua. Uno sviluppatore aggiornato non solo scrive codice migliore: riduce i bug, migliora la sicurezza delle applicazioni, accelera i tempi di sviluppo e porta innovazione all’interno dell’azienda.
La formazione continua degli sviluppatori non è un costo: è il miglior investimento che un’azienda tecnologica possa fare. Con InnovaFormazione puoi pianificare percorsi formativi personalizzati su Node.js, JavaScript, sviluppo web e tecnologie cloud, anche con il supporto dei fondi interprofessionali come Fondimpresa.
Richiedi informazioni e un preventivo personalizzato
Sei interessato al corso Node.js o a un piano formativo su misura per il tuo team? Contattaci per ricevere informazioni dettagliate e un preventivo gratuito e senza impegno.
- Email: info@innovaformazione.net
- Tel.: 347 101 2275 — Dario Carrassi
- Sito web: innovaformazione.net/corso/corso-node-js/
Non aspettare che il tuo team sia in ritardo: la formazione è un vantaggio competitivo che si costruisce giorno per giorno.
Per altri articoli sul mondo IT consigliamo di navigare sul nostro blog QUI.
Articoli correlati
Claude Code e Migrazioni SAP
Claude Code controllo remoto
Opportunità Carriera Contabilità SAP
Guida SIA AI
Guida Dual LLM Verification
