Versione JavaScript lato server Node.js 16.0

È stato rilasciato Node.js 16.0, una piattaforma per eseguire applicazioni di rete in JavaScript. Node.js 16.0 è classificato come ramo di supporto a lungo termine, ma questo status verrà assegnato solo ad ottobre, dopo la stabilizzazione. Node.js 16.0 sarà supportato fino ad aprile 2023. La manutenzione del precedente ramo LTS di Node.js 14.0 durerà fino ad aprile 2023 e l'anno precedente all'ultimo ramo LTS 12.0 fino ad aprile 2022. Il supporto per il ramo 10.0 LTS verrà interrotto tra 10 giorni.

Principali miglioramenti:

  • Il motore V8 è stato aggiornato alla versione 9.0 (Node.js 15 utilizzava la release 8.6), che consente l'implementazione di funzionalità come la proprietà “indices” per le espressioni regolari (include un array con le posizioni iniziale e finale di gruppi di corrispondenze) , il metodo Atomics in Node.js 16 .waitAsync (versione asincrona di Atomics.wait), supporto per l'utilizzo della parola chiave wait nei moduli di livello superiore. Le chiamate alle funzioni sono state accelerate nelle situazioni in cui il numero di argomenti passati non corrisponde ai parametri definiti nella funzione.
  • L'API Timers Promises è stata stabilizzata, fornendo un insieme alternativo di funzioni per lavorare con i timer che restituiscono oggetti Promise come output, eliminando la necessità di utilizzare util.promisify(). import { setTimeout } da 'timer/promesse'; funzione asincrona run() { attendono setTimeout(5000); console.log('Ciao mondo!'); } correre();
  • È stata aggiunta un'implementazione sperimentale dell'API Web Crypto, progettata per eseguire operazioni crittografiche di base sul lato delle applicazioni Web, come la manipolazione di hash crittografici, la generazione e la verifica di firme digitali, la codifica e decodifica dei dati utilizzando vari metodi di crittografia e la generazione di crittograficamente sicuri. numeri casuali. L'API fornisce anche funzioni per generare e gestire le chiavi.
  • N-API (API per lo sviluppo di componenti aggiuntivi) è stata aggiornata alla versione 8.
  • È stato effettuato il passaggio alla nuova release del gestore pacchetti NPM 7.10.
  • Stabilizzata l'implementazione della classe AbortController, che si basa sull'API Web AbortController e consente di annullare i segnali nelle API selezionate basate su Promise.
  • È stato stabilizzato il supporto per la terza versione del formato Source Map, utilizzato per confrontare i moduli generati, elaborati o pacchettizzati con il codice sorgente originale.
  • Per compatibilità con le API Web legacy, sono stati aggiunti i metodi buffer.atob(data) e buffer.btoa(data).
  • È iniziata la formazione di assemblaggi per i nuovi dispositivi Apple dotati del chip M1 ARM.
  • Sulla piattaforma Linux, i requisiti della versione del compilatore sono stati aumentati a GCC 8.3.

Ricordiamo che la piattaforma Node.js può essere utilizzata sia per il supporto lato server di applicazioni Web, sia per la creazione di normali programmi di rete client e server. Per espandere la funzionalità delle applicazioni per Node.js, è stata preparata un'ampia raccolta di moduli, in cui è possibile trovare moduli con l'implementazione di server e client HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, moduli per l'integrazione con vari framework web, gestori WebSocket e Ajax, connettori a DBMS (MySQL, PostgreSQL, SQLite, MongoDB), motori di template, motori CSS, implementazioni di algoritmi crittografici e sistemi di autorizzazione (OAuth), parser XML.

Per garantire l'elaborazione di un gran numero di richieste parallele, Node.js utilizza un modello di esecuzione del codice asincrono basato sulla gestione degli eventi non bloccanti e sulla definizione di gestori di callback. I metodi supportati per le connessioni multiplex sono epoll, kqueue, /dev/poll e select. Per il multiplexing della connessione viene utilizzata la libreria libuv, che è un componente aggiuntivo per libev su sistemi Unix e IOCP su Windows. La libreria libeio viene utilizzata per creare un pool di thread e c-ares è integrato per eseguire query DNS in modalità non bloccante. Tutte le chiamate di sistema che causano il blocco vengono eseguite all'interno del pool di thread e quindi, come i gestori di segnali, trasferiscono il risultato del loro lavoro attraverso una pipe (pipe) senza nome. L'esecuzione del codice JavaScript avviene tramite l'utilizzo del motore V8 sviluppato da Google (inoltre Microsoft sta sviluppando una versione di Node.js con il motore Chakra-Core).

Fondamentalmente, Node.js è simile a Perl AnyEvent, Ruby Event Machine, Python Twisted framework e all'implementazione di eventi Tcl, ma il loop degli eventi in Node.js è nascosto allo sviluppatore e assomiglia alla gestione degli eventi in un'applicazione web in esecuzione nel browser. Quando si scrivono applicazioni per node.js, è necessario considerare le specifiche della programmazione basata sugli eventi, ad esempio, invece di fare "var result = db.query("select..");" con l'attesa del completamento del lavoro e la successiva elaborazione dei risultati, Node.js utilizza il principio dell'esecuzione asincrona, ovvero il codice viene trasformato in "db.query("seleziona..", funzione (risultato) {elaborazione risultato});", in cui il controllo passerà immediatamente a ulteriore codice e il risultato della query verrà elaborato all'arrivo dei dati.

Inoltre, va notato che la società Deno, fondata dal creatore di Node.js per sviluppare la piattaforma Deno di prossima generazione, ha ricevuto investimenti per 4.9 milioni di dollari. Nel suo scopo, Deno è simile a Node.js, ma cerca di eliminare gli errori concettuali commessi nell'architettura Node.js e fornire agli utenti un ambiente più sicuro. Va notato che le soluzioni aziendali di Deno saranno costruite su prodotti completamente aperti e il modello Open Core con funzionalità a pagamento separate è percepito come inaccettabile per la piattaforma Deno.

Fonte: opennet.ru

Aggiungi un commento