إصدار منصة JavaScript الخادمة Node.js 16.0

È stato rilasciato Node.js 16.0, una piattaforma per l'esecuzione di applicazioni di rete in JavaScript. Node.js 16.0 è incluso nei rami con supporto a lungo termine, ma questo status sarà confermato solo a ottobre, dopo la stabilizzazione. Il supporto per Node.js 16.0 sarà garantito fino ad aprile 2023. Il supporto del precedente ramo LTS, Node.js 14.0, continuerà fino ad aprile 2023, mentre il ramo LTS 12.0 sarà supportato fino ad aprile 2022. Il supporto per il ramo LTS 10.0 terminerà tra 10 giorni.

Miglioramenti principali:

  • Il motore V8 è stato aggiornato alla versione 9.0 (in Node.js 15 era utilizzata la versione 8.6), il che ha reso possibile implementare in Node.js 16 funzionalità come la proprietà "indices" per le espressioni regolari (che include un array con le posizioni iniziali e finali dei gruppi di corrispondenza), il metodo Atomics.waitAsync (versione asincrona di Atomics.wait) e il supporto per l'uso della parola chiave await nei moduli di alto livello. È stato accelerato il richiamo delle funzioni quando il numero di argomenti forniti non corrisponde ai parametri definiti nella funzione.
  • Stabilizzato l'API Timers Promises, che offre un insieme alternativo di funzionalità per la gestione dei timer, restituendo oggetti Promise, il che permette di evitare l'uso di util.promisify(). import { setTimeout } from 'timers/promises'; async function run() { await setTimeout(5000); console.log('Hello, World!'); } run();
  • È stata aggiunta un'implementazione sperimentale dell'API Web Crypto, progettata per eseguire operazioni crittografiche di base nelle applicazioni web, come manipolazione di hash crittografici, generazione e verifica di firme digitali, codifica e decodifica di dati utilizzando vari metodi di crittografia, e generazione di numeri casuali crittograficamente sicuri. L'API include anche funzioni per la generazione e la gestione delle chiavi.
  • L'N-API (API per lo sviluppo di addon) è stato aggiornato alla versione 8.
  • È stato effettuato il passaggio alla nuova versione del gestore pacchetti NPM 7.10.
  • Stabilizzata l'implementazione della classe AbortController, basata sull'API Web AbortController, che consente di annullare segnali in API selezionate basate su Promise.
  • È stata stabilizzata la supporto per la terza versione del formato Source Map, utilizzato per il mapping dei moduli generati, elaborati o impacchettati con il codice sorgente originale.
  • Per la compatibilità con le API Web obsolete sono stati aggiunti i metodi buffer.atob(data) e buffer.btoa(data).
  • È iniziata la creazione di build per i nuovi dispositivi Apple dotati di chip ARM M1.
  • Sulla piattaforma Linux, i requisiti per la versione del compilatore sono stati alzati a GCC 8.3.

Ricordiamo che la piattaforma Node.js può essere utilizzata sia per il supporto server di applicazioni Web, sia per la creazione di normali programmi client e server. Per ampliare la funzionalità delle applicazioni Node.js è stata preparata una vasta collezione di moduli, in cui è possibile trovare moduli con implementazione. 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 elevato numero di richieste parallele, Node.js utilizza un modello asincrono di esecuzione del codice, basato su un'architettura ad eventi in modalità non bloccante e sulla definizione di callback. Per il multiplexing delle connessioni, vengono supportati metodi come epoll, kqueue, /dev/poll e select. La libreria libuv, che funge da interfaccia sopra libev nei sistemi Unix e IOCP in Windows, viene utilizzata per il multiplexing delle connessioni. La libreria libeio è impiegata per creare un pool di thread, mentre c-ares è integrato per eseguire richieste DNS in modalità non bloccante. Tutti i syscalls bloccanti sono eseguiti all'interno del pool di thread e, come gli handler dei segnali, restituiscono i risultati delle loro operazioni tramite una pipe non nominata. L'esecuzione del codice JavaScript è garantita dall'utilizzo del motore V8 sviluppato da Google (in aggiunta, Microsoft sviluppa una versione di Node.js con il motore Chakra-Core).

In sostanza, Node.js è simile ai framework Perl AnyEvent, Ruby Event Machine, Python Twisted e all'implementazione degli eventi in Tcl, ma il ciclo di gestione degli eventi in Node.js è nascosto allo sviluppatore e ricorda la gestione degli eventi in un'applicazione web che opera nel browser. Quando si scrivono applicazioni per Node.js, è importante considerare le peculiarità della programmazione orientata agli eventi; per esempio, invece di eseguire "var result = db.query('select..');" aspettando il completamento e poi elaborando i risultati, in Node.js si utilizza il principio dell'esecuzione asincrona, ovvero il codice viene trasformato in "db.query('select..', function (result) {elaborazione del risultato});", permettendo così il passaggio immediato al codice successivo, mentre i risultati della query vengono elaborati man mano che i dati arrivano.

In aggiunta, va sottolineato che l'azienda Deno, fondata dal creatore di Node.js per lo sviluppo della piattaforma di nuova generazione Deno, ha ricevuto 4.9 milioni di dollari di investimenti. Per sua natura, Deno ricorda Node.js, ma cerca di eliminare gli errori concettuali presenti nell'architettura di Node.js e di fornire agli utenti un ambiente più sicuro. Va notato che le soluzioni aziendali di Deno saranno basate su prodotti completamente aperti, mentre il modello Open Core con la separazione di funzionalità a pagamento è considerato inaccettabile per la piattaforma Deno.

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