Lansarea platformei server JavaScript Node.js 16.0

A avut loc lansarea Node.js 16.0, platforma pentru executarea aplicațiilor de rețea scrise în JavaScript. Node.js 16.0 este clasificat ca având suport pe termen lung, dar acest statut va fi conferit abia în octombrie, după stabilizare. Suportul pentru Node.js 16.0 va fi asigurat până în aprilie 2023. Suportul pentru fosta ramură LTS Node.js 14.0 va continua până în aprilie 2023, iar pentru ramura LTS 12.0 până în aprilie 2022. Suportul pentru ramura LTS 10.0 se va încheia în 10 zile.

Îmbunătățiri principale:

  • Motorul V8 a fost actualizat la versiunea 9.0 (în Node.js 15 a fost utilizată versiunea 8.6), ceea ce a permis implementarea în Node.js 16 a unor funcționalități precum proprietatea „indices” pentru expresiile regulate (care include un array cu pozițiile de început și final ale grupurilor de potrivire), metoda Atomics.waitAsync (versiunea asincronă a Atomics.wait), suportul pentru utilizarea cuvântului cheie await în module la nivel de vârf. A fost accelerată apelarea funcțiilor atunci când numărul de argumente oferite nu corespunde parametrilor specificați în funcție.
  • A fost stabilizat API-ul Timers Promises, care oferă un set alternativ de funcții pentru lucrul cu timere, returnând obiecte Promise, ceea ce permite evitarea utilizării util.promisify(). import { setTimeout } from 'timers/promises'; async function run() { await setTimeout(5000); console.log('Hello, World!'); } run();
  • A fost adăugată o implementare experimentală a API-ului Web Crypto, destinat executării operațiunilor criptografice de bază pe partea aplicațiilor web, precum manipularea hash-urilor criptografice, generarea și verificarea semnăturilor digitale, codificarea și decodificarea datelor folosind diverse metode de criptare, generarea de numere aleatoare criptografic sigure. API-ul include, de asemenea, funcții pentru generarea și gestionarea cheilor.
  • N-API (API pentru dezvoltarea extensiilor) a fost actualizat la versiunea 8.
  • A avut loc trecerea la noua versiune a managerului de pachete NPM 7.10.
  • A fost stabilizată implementarea clasei AbortController, bazată pe Web API AbortController, care permite anularea semnalelor în API-urile selectate bazate pe Promise.
  • A fost stabilizată suportul pentru a treia versiune a formatului Source Map, utilizat pentru a face legătura între modulele generate, procesate sau ambalate și codul sursă original.
  • Pentru compatibilitatea cu API-urile Web învechite, au fost adăugate metodele buffer.atob(data) și buffer.btoa(data).
  • A început formarea pachetelor pentru noile dispozitive Apple echipate cu cip ARM M1.
  • Pe platforma Linux, cerințele pentru versiunea compilerului au fost ridicate la GCC 8.3.

Reamintim că platforma Node.js poate fi utilizată atât pentru suportul serverului aplicațiilor web, cât și pentru crearea programelor de rețea client și server obișnuite. Pentru extinderea funcționalității aplicațiilor pentru Node.js, a fost pregătită o mare colecție de module, în care se pot găsi module cu implementarea servere și clienți HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, module pentru integrarea cu diverse framework-uri web, manejere WebSocket și Ajax, convertoare pentru baze de date (MySQL, PostgreSQL, SQLite, MongoDB), generatoare de șabloane, motoare CSS, implementări de algoritmi criptografici și sisteme de autorizare (OAuth), parsere XML.

Pentru a asigura procesarea unui număr mare de cereri paralele, Node.js utilizează un model asincron de execuție a codului, bazat pe procesarea evenimentelor în mod neblocat și pe definirea de callback-uri. Ca metode de multiplexare a conexiunilor sunt susținute metode precum epoll, kqueue, /dev/poll și select. Pentru multiplexarea conexiunilor se utilizează biblioteca libuv, care este o extensie a libev în sistemele Unix și a IOCP în Windows. Pentru crearea unui pool de thread-uri este folosită biblioteca libeio, iar pentru executarea cererilor DNS în mod neblocat este integrat c-ares. Toate apelurile sistemice care provoacă blocarea sunt executate în interiorul pool-ului de thread-uri și apoi, la fel ca manejerele de semnale, transmit rezultatul muncii lor înapoi printr-un canal anonim (pipe). Execuția codului JavaScript este asigurată prin implicarea motorului V8 dezvoltat de compania Google (în plus, Microsoft dezvoltă o variantă de Node.js cu motorul Chakra-Core).

În esență, Node.js este similar cu framework-urile Perl AnyEvent, Ruby Event Machine, Python Twisted și implementarea evenimentelor în Tcl, dar ciclul de procesare a evenimentelor (event loop) din Node.js este ascuns de dezvoltator și seamănă cu procesarea evenimentelor într-o aplicație web care rulează într-un browser. Atunci când scrieți aplicații pentru Node.js, trebuie să luați în considerare specificul programării orientate pe evenimente, de exemplu, în loc de a executa „var result = db.query(„select..”);” așteptând finalizarea operațiunii și prelucrarea ulterioară a rezultatelor, în Node.js se folosește principiul execuției asincrone, adică codul se transformă în „db.query(„select..”, function (result) {prelucrarea rezultatului});”, moment în care controlul va trece instantaneu la alt cod, iar rezultatul cererii va fi prelucrat pe măsură ce datele sosesc.

De asemenea, se poate menționa că compania Deno, fondată de creatorul Node.js pentru dezvoltarea platformei de nouă generație Deno, a obținut 4,9 milioane de dolari în investiții. Pe destinația sa, Deno amintește de Node.js, dar încearcă să corecteze greșelile de concepție făcute în arhitectura Node.js și să ofere utilizatorilor un mediu mai sigur. Se subliniază că soluțiile de afaceri ale companiei Deno vor fi construite pe produse complet open-source, iar modelul Open Core cu separarea unor funcționalități plătite este considerat inacceptabil pentru platforma Deno.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster