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

È stato rilasciato Node.js 23.0.0, una piattaforma per l'esecuzione di applicazioni di rete in JavaScript. Node.js 23.0 è classificato come una versione intermedia, il cui supporto durerà 7 mesi (fino a giugno 2025). Nei prossimi giorni verrà completata la stabilizzazione della versione Node.js 22, che il 29 ottobre otterrà lo status LTS e sarà supportata fino ad aprile 2027. Il supporto per le versioni LTS precedenti Node.js 20.x e 18.x continuerà fino ad aprile 2026 e 2025 rispettivamente.

Principali miglioramenti:

  • È stata aggiunta la supporto sperimentale per il linguaggio TypeScript, che consente la definizione esplicita dei tipi. Il supporto viene attivato tramite 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 del linguaggio (non viene effettuato alcun controllo dei tipi, il codice viene semplicemente convertito in JavaScript senza tipi). La seconda opzione esegue la trasformazione in codice JavaScript di alcuni elementi della sintassi TypeScript, come gli enum e i namespace.
  • È stata attivata per impostazione predefinita la possibilità di utilizzare la chiamata "require()" per caricare i moduli JavaScript ESM (ECMAScript Modules) in modalità sincrona. I moduli ESM vengono utilizzati nei browser e sostituiscono i moduli CommonJS, specifici per Node.js. Per caricare un modulo ESM tramite "require()" in Node.js, il modulo deve essere eseguito in modalità sincrona (senza await a livello superiore).
  • È stata garantita la rilevazione automatica dei moduli ESM in file senza estensione o con estensione ".js". In precedenza, tali file venivano trattati come moduli CommonJS, a meno che il loro tipo non fosse esplicitamente indicato nel file package.json presente nella stessa directory ("type": "module"). Nella nuova versione, per i file il cui tipo non è contrassegnato in package.json, viene innanzitutto tentato il caricamento come modulo CommonJS, e se questo fallisce, come modulo ESM.
  • È stata aggiunta un'implementazione sperimentale compatibile con i browser API Web Storage, destinata per la 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 specificare il percorso al file di archiviazione tramite il flag "—localstorage-file".
  • È stata aggiunta una API sperimentale SQLite per lavorare con database, utilizzando il linguaggio di query SQL e l'archiviazione basata sulla libreria SQLite. Oltre a memorizzare il database in un file sul disco, può essere anche collocato in memoria, specificando invece del nome del file ":memory:". L'API Web Storage di cui sopra è stata anche implementata sopra SQLite, il che ha portato all'aggiunta di SQLite tra le dipendenze per Node.js.
  • È stato dichiarato stabile il comando "node —run", destinato per l'esecuzione di script definiti nel file package.json.
  • È stata implementata un'opzione di supporto per la memorizzazione nella cache del codice compilato su disco per accelerare significativamente l'avvio dei moduli. L'attivazione della memorizzazione nella cache avviene tramite la variabile di ambiente NODE_COMPILE_CACHE. Per funzione, questa opzione ricorda il pacchetto v8-compile-cache, ma presenta prestazioni superiori e supporto per i moduli ESM.
  • È stata ottimizzata l'oggetto Buffer, consentendo un notevole incremento delle prestazioni dei metodi Buffer.copy() e Buffer.write().
  • È stata aumentata la prestazione del modulo node:fs, in cui è stato anche ridotto il numero di chiamate al codice C++ durante l'esecuzione.
  • Il motore V8 è stato aggiornato alla versione 12.9, utilizzata in Chromium 129.
  • È stato rimosso il supporto per sistemi a 32 bit con il sistema operativo Windows.
  • A causa dell'implementazione in Node.js e nel motore V8 delle funzionalità definite nello standard C++20, sono stati aumentati i requisiti per la versione del compilatore GCC. Per costruire Node.js ora è richiesta almeno la versione GCC 12.

La piattaforma Node.js può essere utilizzata sia per il supporto server lato Web di applicazioni che per creare normali programmi client e server di rete. Per espandere la funzionalità delle applicazioni Node.js è stata preparata una vasta collezione di moduli, in cui si possono trovare moduli con implementazione server e client HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, moduli per integrazioni con diversi framework web, gestori WebSocket e Ajax, connettori a DBMS (MySQL, PostgreSQL, SQLite, MongoDB), motori di templating, motori CSS, implementazioni di algoritmi crittografici e sistemi di autorizzazione (OAuth), parser XML.

Per garantire la gestione di un gran numero di richieste parallele, Node.js utilizza un modello asincrono per l'esecuzione del codice, basato sul trattamento degli eventi in modalità non bloccante e sulla definizione di gestori di callback. Tra i metodi di multiplexing delle connessioni sono supportati metodi come epoll, kqueue, /dev/poll e select. Per il multiplexing delle connessioni viene utilizzata la libreria libuv, che è un'astrazione sulla libev nei sistemi Unix e su IOCP in Windows. Per la creazione di un pool di thread viene utilizzata la libreria libeio; per l'esecuzione di richieste DNS in modalità non bloccante viene integrata c-ares. Tutte le chiamate di sistema che comportano blocchi vengono eseguite all'interno del pool di thread e poi, come i gestori di segnali, restituiscono il risultato del loro lavoro tramite un canale non nominato (pipe).

L'esecuzione del codice JavaScript è garantita attraverso l'uso del motore V8 sviluppato da Google (inoltre, Microsoft sviluppa una variante di Node.js con il motore Chakra-Core). Fondamentalmente, Node.js è simile a framework come Perl AnyEvent, Ruby Event Machine, Python Twisted e all'implementazione degli eventi in Tcl, ma il ciclo di elaborazione degli eventi (event loop) in Node.js è nascosto agli sviluppatori e ricorda la gestione 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