Lansarea platformei server JavaScript Node.js 14.0

A avut loc lansare Node.js 14.0, platforme pentru executarea aplicatiilor de rețea în limbajul JavaScript. Node.js 14.0 face parte din ramurile cu suport pe termen lung, dar acest statut va fi acordat abia în octombrie, după stabilizare. Suportul pentru Node.js 14.0 va fi asigurat până în aprilie 2023. Suportul pentru fosta ramură LTS Node.js 12.0 va continua până în aprilie 2022, iar pentru ramura LTS anterioară 10.0 până în aprilie 2021. Suportul pentru ramura intermediară 13.x se va încheia în iunie acestui an.

Principalele îmbunătățiri:

  • A fost stabilizată capacitatea de generare în timp real sau la apariția anumitor evenimente a rapoartelor de diagnostic, care reflectă evenimentele ce ajută la diagnosticarea unor probleme precum blocajele, scăderea performanței, scurgerile de memorie, o încărcare mare a CPU-ului, erorile neașteptate etc.
  • A fost adăugată suport experimental pentru API-ul Async Local Storage cu implementarea clasei AsyncLocalStorage, care poate fi utilizată pentru a crea un context asincron cu gestionatori bazati pe apeluri callback și promisiuni. AsyncLocalStorage permite stocarea datelor pe parcursul procesării cererii web, amintind de depozitele locale pentru firele individuale (Thread-Local Storage) din alte limbaje.
  • A fost eliminat mesajul de avertizare legat de capacitățile experimentale la încărcarea modules ECMAScript 6 modulelor importate și exportate prin expresiile import și export. Între timp, implementarea modulelor ESM rămâne încă experimentală.
  • Motorul V8 a fost actualizat la versiunea 8.1 (1, 2, 3), care include noi optimizări de performanță și adăugări precum noul operator logic de coalescență „??” (returnează operandul din dreapta dacă operandul din stânga are valoarea NULL sau undefined și invers), operatorul „?.” pentru verificarea simultană a întregii lanțuri de proprietăți sau apeluri (de exemplu „db?.user?.name?.length” fără verificări prealabile), metoda Intl.DisplayName pentru obținerea denumirilor localizate etc.
  • A fost revizuit API-ul Streams, având ca scop îmbunătățirea coerenței interfețelor API Streams și eliminarea diferențelor în comportamentul componentelor de bază ale Node.js. De exemplu, comportamentul http.OutgoingMessage a fost apropiat de stream.Writable, iar net.Socket de stream.Duplex. Opțiunea autoDestroy este setată implicit pe „true”, ceea ce implică apelarea „_destroy” după finalizare.
  • A fost adăugată suport experimental pentru API-ul WASI (WebAssembly System Interface), oferind interfețe programatice pentru interacțiunea directă cu sistemul de operare (API POSIX pentru lucrul cu fișiere, socket-uri etc.).
  • Cerințele pentru versiunile minime compilatoare și platforme: macOS 10.13 (High Sierra), GCC 6, Windows 7/2008R2 sau mai recent.

actualizare 13.0.1, în care au fost corectate câteva erori. Printre acestea, a fost rezolvată problema cu avertismentul privind utilizarea unei versiuni nesuportate în npm 6.12.0. Reamintim că platforma Node.js poate fi utilizată atât pentru întreținerea serverului aplicațiilor web, cât și pentru crearea de programe de rețea client-server obișnuite. Pentru a extinde funcționalitățile aplicațiilor Node.js, a fost pregătită o mare, care poate găsi module pentru implementarea serverelor și clienților HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, module pentru integrarea cu diferite framework-uri web, gestionari WebSocket și Ajax, conectori pentru SGBD-uri (MySQL, PostgreSQL, SQLite, MongoDB), motoruri de template-uri, 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 folosește un model de execuție a codului asincron, bazat pe gestionarea evenimentelor într-un mod non-blocant și definirea gestionatorilor de callback. Ca metode de multiplexare a conexiunilor, sunt susținute metode precum epoll, kqueue, /dev/poll și select. Pentru multiplexarea conexiunilor se folosește biblioteca libuv, care este un strat deasupra libev în sistemele Unix și deasupra IOCP în Windows. Pentru a crea un pool de fire de execuție (thread pool), se folosește biblioteca libeio, pentru a efectua cereri DNS într-un mod non-blocant este integrat c-ares. Toate apelurile de sistem care generează blocare sunt efectuate în interiorul pool-ului de fire și apoi, la fel ca gestionarii de semnale, transmit rezultatul muncii lor înapoi printr-un canal anonimizat (pipe). Executarea codului JavaScript este asigurată prin utilizarea motorului dezvoltat de Google V8 (în plus, Microsoft dezvoltă o variantă 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) în Node.js este ascuns de dezvoltator și semează procesarea evenimentelor într-o aplicație web care funcționează în browser. Când scrieți aplicații pentru node.js, trebuie să luați în considerare specificitatea programării orientate pe evenimente, de exemplu, în loc de a executa „var result = db.query(„select..”);” așteptând finalizarea muncii și procesarea ulterioară a rezultatelor, în Node.js se folosește principiul execuției asincrone, adică codul se transformă în „db.query(„select..”, function (result) {procesarea rezultatului});”, unde controlul va trece imediat la codul ulterior, iar rezultatul cererii va fi procesat pe măsură ce datele sosesc.

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