Le novità Node.js 25.9.0

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 contenutiLe novità Node.js 25.9.0

  1. Cos’è Node.js 25.9.0 e perché aggiornarsi
  2. Test Runner: nuova API MockModuleOptions.exports
  3. AsyncLocalStorage: supporto agli using scopes
  4. Nuova opzione CLI –max-heap-size
  5. Crittografia avanzata: TurboSHAKE e KangarooTwelve
  6. REPL: gestione degli errori personalizzabile e rimozione del modulo domain
  7. Single Executable Applications (SEA): code cache per ESM
  8. stream/iter: la nuova implementazione sperimentale
  9. Altre novità degne di nota
  10. Best practice: pro e contro di Node.js 25.9.0
  11. 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 scopesLe 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 KangarooTwelveLe 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 ESMLe 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.

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.

(fonte) (fonte) (fonte)

Ti potrebbe interessare

Articoli correlati