Server-side JavaScript Node.js 16.0 release

Node.js 16.0 släpptes, en plattform för att köra nätverksapplikationer i JavaScript. Node.js 16.0 klassificeras som en långsiktig supportgren, men denna status kommer att tilldelas först i oktober, efter stabilisering. Node.js 16.0 kommer att stödjas fram till april 2023. Underhållet av den tidigare LTS-grenen av Node.js 14.0 kommer att pågå till april 2023, och året innan, LTS-gren 12.0 till april 2022. Support för 10.0 LTS-filialen kommer att upphöra om 10 dagar.

Huvudsakliga förbättringar:

  • V8-motorn har uppdaterats till version 9.0 (Node.js 15 använde version 8.6), vilket tillåter implementering av funktioner som "index"-egenskapen för reguljära uttryck (inkluderar en array med start- och slutpositioner för grupper av matchningar) , Atomics-metoden i Node.js 16 .waitAsync (async version av Atomics.wait), stöd för att använda nyckelordet await i toppnivåmoduler. Funktionsanrop har accelererats i situationer där antalet skickade argument inte motsvarar parametrarna som definierats i funktionen.
  • Timers Promises API har stabiliserats, vilket ger en alternativ uppsättning funktioner för att arbeta med timers som returnerar Promise-objekt som utdata, vilket eliminerar behovet av att använda util.promisify(). importera { setTimeout } från 'timers/promises'; async function run() { await setTimeout(5000); console.log('Hej världen!'); } springa();
  • En experimentell implementering av Web Crypto API har lagts till, utformad för att utföra grundläggande kryptografiska operationer på sidan av webbapplikationer, såsom manipulering av kryptografiska hash, generering och verifiering av digitala signaturer, kodning och avkodning av data med olika krypteringsmetoder och generering av kryptografiskt säkra slumpmässiga siffror. API:et tillhandahåller även funktioner för att generera och hantera nycklar.
  • N-API (API för att utveckla tillägg) har uppdaterats till version 8.
  • Övergången till den nya versionen av pakethanteraren NPM 7.10 har gjorts.
  • Stabiliserade implementeringen av AbortController-klassen, som är baserad på AbortController Web API och tillåter att signaler kan avbrytas i utvalda Promise-baserade API:er.
  • Stödet för den tredje versionen av Source Map-formatet, som används för att jämföra genererade, bearbetade eller paketerade moduler med den ursprungliga källkoden, har stabiliserats.
  • För kompatibilitet med äldre webb-API:er har metoderna buffer.atob(data) och buffer.btoa(data) lagts till.
  • Bildandet av enheter för nya Apple-enheter utrustade med M1 ARM-chippet har börjat.
  • På Linux-plattformen har kraven på kompilatorversionen höjts till GCC 8.3.

Kom ihåg att Node.js-plattformen kan användas både för serverunderhåll av webbapplikationer och för att skapa vanliga klient- och servernätverksprogram. För att utöka funktionaliteten av applikationer för Node.js har en stor samling av moduler utarbetats, där du kan hitta moduler med implementering av HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3-servrar och klienter, moduler för integration med olika webbramverk, WebSocket- och Ajax-hanterare, DBMS-anslutningar (MySQL, PostgreSQL, SQLite, MongoDB), mallmotorer, CSS-motorer, implementeringar av kryptoalgoritmer och auktoriseringssystem (OAuth), XML-parsers.

För att säkerställa bearbetningen av ett stort antal parallella förfrågningar använder Node.js en asynkron kodexekveringsmodell baserad på icke-blockerande händelsehantering och definitionen av callback-hanterare. Metoder som stöds för multiplexering av anslutningar är epoll, kqueue, /dev/poll och select. För anslutningsmultiplexering används libuv-biblioteket, som är ett tillägg för libev på Unix-system och IOCP på Windows. Libeio-biblioteket används för att skapa en trådpool, och c-ares är integrerad för att utföra DNS-frågor i icke-blockerande läge. Alla systemanrop som orsakar blockering exekveras inne i trådpoolen och överför sedan, liksom signalhanterare, resultatet av sitt arbete tillbaka genom ett namnlöst rör (pipe). Exekveringen av JavaScript-kod tillhandahålls genom användningen av V8-motorn som utvecklats av Google (dessutom utvecklar Microsoft en version av Node.js med Chakra-Core-motorn).

I sin kärna liknar Node.js Perl AnyEvent, Ruby Event Machine, Python Twisted och implementeringen av Tcl-händelser, men händelseslingan i Node.js är dold för utvecklaren och liknar händelsehantering i en webbapplikation som körs i webbläsaren. När du skriver applikationer för node.js måste du ta hänsyn till detaljerna för händelsestyrd programmering, till exempel istället för att göra "var result = db.query("select..");" med väntan på slutförande av arbete och efterföljande bearbetning av resultat, använder Node.js principen om asynkron exekvering, d.v.s. koden omvandlas till "db.query("select..", funktion (resultat) {resultatbearbetning});", där kontrollen omedelbart kommer att övergå till ytterligare kod, och frågeresultatet kommer att bearbetas när data anländer.

Dessutom kan det noteras att Deno-företaget, grundat av skaparen av Node.js för att utveckla nästa generations Deno-plattform, fick 4.9 miljoner dollar i investeringar. I sitt syfte liknar Deno Node.js, men den försöker eliminera de konceptuella felen som görs i Node.js-arkitekturen och ge användarna en säkrare miljö. Det noteras att Denos affärslösningar kommer att byggas på helt öppna produkter, och Open Core-modellen med separat betald funktionalitet uppfattas som oacceptabel för Deno-plattformen.

Källa: opennet.ru

Lägg en kommentar