Rilascio della piattaforma server JavaScript Node.js 13.0

È disponibile il rilascio Node.js 13.0, piattaforma per l'esecuzione di applicazioni web in JavaScript. È stata completata nel contempo la stabilizzazione della precedente versione Node.js 12.x, che è stata trasferita nella categoria delle versioni con supporto a lungo termine, gli aggiornamenti per le quali vengono rilasciati per 4 anni. Il supporto per la precedente versione LTS Node.js 10.0 durerà fino ad aprile 2021, mentre per la versione LTS di due versioni fa 8.0 fino a gennaio 2020.

Principali miglioramenti:

  • Il motore V8 è stato aggiornato alla versione 7.8, che incorpora nuovi metodi di ottimizzazione delle prestazioni, migliora la destrutturazione degli oggetti, riduce il consumo di memoria e abbrevia il tempo di preparazione per l'esecuzione di WebAssembly;
  • È stata abilitata per impostazione predefinita il supporto completo per l'internazionalizzazione e Unicode basato sulle librerie ICU (International Components for Unicode), che consente agli sviluppatori di scrivere codice che supporta lavorare con diverse lingue e località. Il modulo full-icu ora è installato per impostazione predefinita;
  • Stabilito l'API Workers Threads, consentendo per creare cicli di eventi multithreading (event loop). L'implementazione è basata sul modulo worker_threads, che consente l'esecuzione di codice JavaScript in più thread in parallelo. Il supporto stabile dell'API Workers Threads è stato anche retroportato nella versione LTS Node.js 12.x;
  • Aumentati i requisiti delle piattaforme. Per la compilazione ora è necessario è necessario almeno macOS 10.11 (è richiesto Xcode 10), AIX 7.2, Ubuntu 16.04, Debian 9, EL 7, Alpine 3.8, Windows 7/2008;
  • Migliorato il supporto per Python 3. Se nel sistema sono presenti Python 2 e Python 3, viene comunque utilizzato Python 2, ma è stata aggiunta la possibilità di compilazione se nel sistema è presente solo Python 3;
  • Rimossa la vecchia implementazione dell'HTTP parser («—http-parser=legacy»). Rimossi o retrocessi a obsoleti chiamate e proprietà FSWatcher.prototype.start(), ChildProcess._channel, metodo open() negli oggetti ReadStream e WriteStream, request.connection, response.connection, module.createRequireFromPath();
  • Successivamente è uscito l'aggiornamento 13.0.1, nel quale sono stati corretti rapidamente alcuni bug. Tra cui è stata risolta la questione di una notifica in npm 6.12.0 riguardante l'uso di una versione non supportata.

Ricordiamo che la piattaforma Node.js può essere utilizzata sia per il supporto server delle web application, sia per la creazione di normali programmi di rete client e server. È stata preparata una grande collezione 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 web framework, gestori WebSocket e Ajax, connettori per DBMS (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 di esecuzione asincrono basato su un trattamento eventi in modalità non bloccante e definizione di callback. Come metodi di multiplexing delle connessioni, supporta tecniche come epoll, kqueue, /dev/poll e select. Per il multiplexing delle connessioni viene utilizzata la libreria libuv, che è una sovrastruttura su libev nei sistemi Unix e su IOCP in Windows. Per creare un pool di thread viene utilizzata la libreria libeio, per eseguire query DNS in modalità non bloccante è integrato c-ares. Tutti i syscall che causano blocchi vengono eseguiti all'interno del pool di thread e poi, come anche i gestori dei segnali, restituiscono il risultato del loro lavoro tramite un canale anonimo (pipe). L'esecuzione del codice JavaScript è garantita attraverso l'utilizzo del motore sviluppato da Google V8 (in aggiunta Microsoft sviluppa una variante di Node.js con il motore Chakra-Core).

Node.js è essenzialmente simile a framework quali Perl AnyEvent, Ruby Event Machine, Python Twisted e implementazione di eventi in Tcl, ma il ciclo di elaborazione degli eventi (event loop) in Node.js è nascosto agli sviluppatori e ricorda il trattamento degli eventi in un'app web che opera nel browser. Quando si scrivono applicazioni per Node.js è importante considerare le specificità della programmazione orientata agli eventi; per esempio, invece di eseguire «var result = db.query(«select..»);» in attesa del completamento e successivo trattamento dei risultati, in Node.js si utilizza il principio dell'esecuzione asincrona, cioè il codice viene trasformato in «db.query(«select..», function (result) {trattamento del risultato});», nel quale il controllo passerà immediatamente al codice successivo, mentre il risultato della query sarà trattato man mano che i dati arrivano.

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