È stata pubblicata la piattaforma Node.js 23.0 con supporto iniziale per il linguaggio TypeScript

È stata rilasciata la versione Node.js 23.0.0, una piattaforma per l'esecuzione di applicazioni di rete in JavaScript. Node.js 23.0 appartiene ai rami intermedi, con un supporto che durerà 7 mesi (fino a giugno 2025). Nei prossimi giorni sarà completata la stabilizzazione del ramo Node.js 22, che il 29 ottobre acquisirà lo stato di LTS e sarà supportato fino ad aprile 2027. Il supporto per i precedenti rami LTS Node.js 20.x e 18.x continuerà fino ad aprile 2026 e 2025 rispettivamente.

Miglioramenti principali:

  • È stata aggiunta la supporto sperimentale per il linguaggio TypeScript, che consente la definizione esplicita dei tipi. La supporto si attiva utilizzando le opzioni "—experimental-strip-types" e "—experimental-transform-types". Con la prima opzione, il lavoro con TypeScript si riduce alla rimozione delle definizioni di tipo specifiche per quel linguaggio (non viene eseguita alcuna verifica dei tipi, il codice viene semplicemente convertito in JavaScript privo di tipi). La seconda opzione trasforma in codice JavaScript alcuni elementi della sintassi TypeScript, come enumerazioni (enum) e spazi dei nomi (namespace).
  • È stata abilitata per impostazione predefinita la possibilità di utilizzare la chiamata "require()" per caricare moduli JavaScript ESM (ECMAScript Modules) in modalità sincrona. I moduli ESM sono utilizzati nei browser e sostituiscono i moduli CommonJS, specifici per Node.js. Per caricare un modulo ESM con "require()" in Node.js, il modulo deve essere eseguito in modalità sincrona (senza await a livello superiore).
  • È stata implementata l'individuazione automatica dei moduli ESM nei file senza estensione o con estensione ".js". In precedenza, i file di questo tipo venivano considerati moduli CommonJS, a meno che il loro tipo non fosse esplicitamente indicato nel file package.json della stessa cartella ("type": "module"). Nella nuova versione, per i file il cui tipo non è specificato nel package.json, si tenta prima di caricarli come moduli CommonJS; se questa operazione fallisce, vengono caricati come moduli ESM.
  • Aggiunta un'implementazione sperimentale compatibile con i browser API Web Storage, destinata alla memorizzazione permanente (classe localStorage) o temporanea (classe sessionStorage) di dati nel formato chiave/valore. Per attivare il supporto per Web Storage è necessario avviare con il flag "—experimental-webstorage" e indicare il percorso del file di archiviazione tramite il flag "—localstorage-file".
  • È stato aggiunto un API sperimentale SQLite per lavorare con database, utilizzando il linguaggio di interrogazione SQL e un archivio basato sulla libreria SQLite. Oltre a memorizzare il database in un file su disco, può anche essere collocato in memoria specificando al posto del nome file ":memory:". L'API Web Storage sopra menzionata è stata implementata utilizzando SQLite, il che ha portato ad includere SQLite tra le dipendenze per Node.js.
  • È stata dichiarata stabile la comando "node —run", destinato all'esecuzione di script definiti nel file package.json.
  • È stata implementata un'opzione di supporto per la memorizzazione cache del codice compilato su disco per un notevole incremento della velocità di avvio dei moduli. L'attivazione della memorizzazione cache avviene attraverso la variabile d'ambiente NODE_COMPILE_CACHE. Questa funzionalità è simile al pacchetto v8-compile-cache, ma offre prestazioni superiori e supporto per i moduli ESM.
  • È stata ottimizzata l'oggetto Buffer, che ha notevolmente migliorato le prestazioni dei metodi Buffer.copy() e Buffer.write().
  • È stata aumentata la performance del modulo node:fs, riducendo anche il numero di chiamate al codice in C++ durante l'esecuzione.
  • Il motore V8 è stato aggiornato alla versione 12.9, utilizzata in Chromium 129.
  • È stata rimossa la supporto per sistemi a 32 bit con sistema operativo Windows.
  • A causa dell'integrazione in Node.js e nel motore V8 delle funzionalità definite nello standard C++20, sono aumentati i requisiti per la versione del compilatore GCC. Per compilare Node.js ora è richiesta almeno la versione 12 di GCC.

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 grande numero di richieste parallelle, Node.js utilizza un modello di esecuzione asincrono basato sulla gestione degli eventi in modalità non bloccante e sulla definizione di gestori di callback. Come metodi di multiplexing delle connessioni sono supportati epoll, kqueue, /dev/poll e select. Per il multiplexing delle connessioni si utilizza la libreria libuv, che è un'astrazione sopra libev nei sistemi Unix e sopra IOCP in Windows. Per creare un pool di thread è utilizzata la libreria libeio, mentre per eseguire richieste DNS in modalità non bloccante è integrata c-ares. Tutti i system call che comportano blocco vengono eseguiti all'interno del pool di thread e quindi, 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 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

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster