Izdaja strežniške JavaScript platforme Node.js 16.0

Izšel je Node.js 16.0, platforma za izvajanje omrežnih aplikacij v programskem jeziku JavaScript. Node.js 16.0 spada med veje z dolgoročnim vzdrževanjem, vendar bo ta status dodeljen šele oktobra, po stabilizaciji. Podpora za Node.js 16.0 bo zagotavljana do aprila 2023. Podpora prejšnje LTS veje Node.js 14.0 bo trajala do aprila 2023, medtem ko bo podpora za predprejšnjo LTS vejo 12.0 trajala do aprila 2022. Podpora za LTS vejo 10.0 se bo končala čez 10 dni.

Glavne izboljšave:

  • Motor V8 je posodobljen na različico 9.0 (v Node.js 15 je bila uporabljena različica 8.6), kar je omogočilo uvajanje v Node.js 16 novih funkcionalnosti, kot so lastnost 'indices' za regularne izraze (vključuje tabelo z začetnimi in končnimi pozicijami skupin ujemanj), metoda Atomics.waitAsync (asinhrona različica Atomics.wait), ter podpora za uporabo ključne besede await v modulih na vrhnji ravni. Vabilo funkcij je pospešeno, kadar število posredovanih argumentov ne ustreza določenim parametrom funkcije.
  • Stabiliziran je API Timers Promises, ki ponuja alternativni nabor funkcij za delo s časovniki, ki vrnejo obljube (Promise), kar omogoča, da se izognemo uporabi util.promisify(). import { setTimeout } from 'timers/promises'; async function run() { await setTimeout(5000); console.log('Hello, World!'); } run();
  • Dodana je eksperimentalna implementacija API-ja Web Crypto, namenjena izvajanju osnovnih kriptografskih operacij na strani spletnih aplikacij, kot so manipulacije s kriptografskimi hashi, generiranje in preverjanje digitalnih podpisov, kodiranje in dekodiranje podatkov z uporabo različnih metod šifriranja, ter generiranje kriptografsko zanesljivih naključnih števil. API vključuje tudi funkcije za generiranje in upravljanje ključev.
  • N-API (API za razvoj razširitev) je posodobljen na različico 8.
  • Prehod na novo različico upravitelja paketov NPM 7.10 je bil izveden.
  • Stabilizirana je implementacija razreda AbortController, ki temelji na Web API AbortController in omogoča odpoved signalov v izbranih API-jih na osnovi Promise.
  • Stabilizirana je podpora tretji različici formata Source Map, ki se uporablja za povezovanje generiranih, obdelanih ali pakiranih modulov z originalnim izvorno kodo.
  • Za združljivost z zastarelimi Web API-ji so dodane metode buffer.atob(data) in buffer.btoa(data).
  • Začelo se je oblikovanje gradiv za nove naprave Apple, opremljene s čipom ARM M1.
  • Na platformi Linux so zahteve za različico prevajalnika dvignjene na GCC 8.3.

Podsećamo da se Node.js platforma može koristiti kako za serversku podršku web aplikacija, tako i za kreiranje običnih klijentskih i serverskih mrežnih programa. Za proširenu funkcionalnost aplikacija za Node.js pripremljena je velika kolekcija modula, koja sadrži module sa implementacijom strežnikov i HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 klijenata, module za integraciju sa raznim web okvirima, WebSocket i Ajax obradi, konektore za baze podataka (MySQL, PostgreSQL, SQLite, MongoDB), predloške, CSS motore, implementacije kriptoalgoritama i sistema autorizacije (OAuth), XML parsera.

Za obradnjo velikega števila vzporednih zahtevkov Node.js uporablja asinhroni model izvajanja kode, ki temelji na obdelavi dogodkov v neblokirnem načinu in določanju callback obdelovalcev. Kot načine multiplexiranja povezav podpira metode, kot so epoll, kqueue, /dev/poll in select. Za multiplexiranje povezav se uporablja knjižnica libuv, ki je nadgradnja nad libev v sistemih Unix in nad IOCP v Windows. Za ustvarjanje sklada niti (thread pool) se uporablja knjižnica libeio, za izvedbo DNS zahtevkov v neblokirnem načinu pa je integriran c-ares. Vsi sistemski klici, ki povzročajo blokado, se izvajajo v okviru sklada niti in nato, tako kot obdelovalci signalov, rezultat svojega dela pošljejo nazaj prek anonimne cevi (pipe). Izvajanje JavaScript kode omogoča vključen motor V8, ki ga je razvilo podjetje Google (dodatno Microsoft razvija različico Node.js z motorjem Chakra-Core).

Po svoji naravi je Node.js podoben okvirjem Perl AnyEvent, Ruby Event Machine, Python Twisted in izvedbi dogodkov v Tcl, vendar je cikel obdelave dogodkov (event loop) v Node.js skrit pred razvijalcem in spominja na obdelavo dogodkov v spletni aplikaciji, ki deluje v brskalniku. Pri pisanju aplikacij za Node.js je potrebno upoštevati posebnosti programiranja, usmerjenega na dogodke; na primer, namesto izvajanja 'var result = db.query('select..');' z čakanjem na zaključek dela in nadaljnjo obdelavo rezultatov, Node.js uporablja načelo asinhronega izvajanja, torej se koda preoblikuje v 'db.query('select..', function (result) {obdelava rezultata});', pri čemer se nadzor takoj prenese na nadaljnjo kodo, rezultat poizvedbe pa se obdeluje ob prihodu podatkov.

Dodatno lahko omenimo, da je podjetje Deno, ki ga je ustanovil ustvarjalec Node.js za razvoj platforme nove generacije Deno, prejelo 4,9 milijona dolarjev naložb. Po svoji funkcionalnosti Deno spominja na Node.js, a si prizadeva odpraviti konceptualne napake v arhitekturi Node.js in uporabnikom zagotoviti bolj varno okolje. Poudarjeno je, da bodo poslovne rešitve podjetja Deno temeljile na popolnoma odprtih izdelkih, medtem ko se model Open Core s poudarjanjem posameznih plačljivih funkcionalnosti dojema kot nesprejemljiv za platformo Deno.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster