Node.js 19, nuova versione del noto ambiente Open Source per lo sviluppo di applicazioni JavaScript, è finalmente disponibile con diverse nuove feature tra cui l'abilitazione in modalità predefinita di HTTP(s)/1.1 KeepAlive e l'aggiornamento dell'engine JavaScript V8 alla release 10.7.
Questo rilascio sostituisce Node.js 18 come "Current release" del progetto mentre la milestone precedente entra nella fase LTS (Long-Term Support), Node.js 19 continuerà quindi ad essere la "Current release" di riferimento per i prossimi 6 mesi e fino all'aprile del prossimo anno.
HTTP(S)/1.1 KeepAlive
Con Node.js 19 abbiamo l'abilitazione di default di keepAlive
che è stata settata su true
, di conseguenza tutte le connessioni HTTP e HTTPS in uscita utilizzeranno automaticamente HTTP 1.1 Keep-Alive.
Ciò dovrebbe garantire un livello di throughput più elevato nel riutilizzo delle connessioni, nello stesso modo l'Agent, cioè la classe deputata alla gestione della persistenza delle connessioni per il clienti HTTP, sarà in grado di effettuare il parsing delle risposte Keep-Alive
inviate dal server.
La funzione dell'header è sostanzialmente quella di indicare al client quale dovrà essere la durata della connessione, il server Node.js effettuerà invece la disconnessione nel momento in cui sarà richiamato il metodo close()
.
node --watch
Tra le funzionalità sperimentali di Node.js 19 vi è la possibilità di eseguire il runtime in modalità watch utilizzando l'opzione node --watch
. Grazie ad essa il processo di esecuzione verrà riavviato in corrispondenza delle modifiche effettuate sui file importati:
$ node --watch index.js
WebCrypto API
La WebCrypto API è ora stabile con l'eccezione di alcuni algoritmi, l'accesso al modulo è comunque condizionato all'utilizzo di globalThis.crypto
o require('node:crypto').webcrypto
.
Funzionalità rimosse e dipendenze
In Node.js 19 il flag --experimental-specifier-resolution
è stato rimosso in favore dei custom loader, stesso discorso per quanto riguarda il supporto a DTrace/SystemTap/ETW. Nel caso di questi ultimi la rimozione sarebbe avvenuta in particolare perché non vi erano dei piani precisi per la loro implementazione.
Come anticipato l'engine V8 passa alla versione 10.7 che è parte integrante di Chromium 107, con questo aggiornamento viene inclusa anche la JavaScript API Intl.NumberFormat
.