Utgivelse av JavaScript-plattformen på serversiden Node.js 16.0

Node.js 16.0 ble utgitt, en plattform for å kjøre nettverksapplikasjoner i JavaScript. Node.js 16.0 er klassifisert som en langsiktig støttegren, men denne statusen vil bli tildelt først i oktober, etter stabilisering. Node.js 16.0 vil bli støttet frem til april 2023. Vedlikehold av den forrige LTS-grenen til Node.js 14.0 vil vare til april 2023, og året før siste LTS-gren 12.0 til april 2022. Støtte for 10.0 LTS-filialen vil bli avviklet om 10 dager.

Hovedforbedringer:

  • V8-motoren har blitt oppdatert til versjon 9.0 (Node.js 15 brukte versjon 8.6), som tillater implementering av funksjoner som "indekser"-egenskapen for regulære uttrykk (inkluderer en matrise med start- og sluttposisjoner for grupper av kamper) , Atomics-metoden i Node.js 16 .waitAsync (async-versjon av Atomics.wait), støtte for bruk av await-nøkkelordet i toppnivåmoduler. Funksjonskall har blitt akselerert i situasjoner der antall argumenter som sendes ikke samsvarer med parameterne som er definert i funksjonen.
  • Timers Promises API har blitt stabilisert, og gir et alternativt sett med funksjoner for å arbeide med timere som returnerer Promise-objekter som utdata, noe som eliminerer behovet for bruk av util.promisify(). importer { setTimeout } fra 'timere/løfter'; async function run() { await setTimeout(5000); console.log('Hei, verden!'); } løpe();
  • En eksperimentell implementering av Web Crypto API har blitt lagt til, designet for å utføre grunnleggende kryptografiske operasjoner på siden av nettapplikasjoner, for eksempel manipulering av kryptografiske hasjer, generering og verifisering av digitale signaturer, koding og dekoding av data ved hjelp av ulike krypteringsmetoder, og generering av kryptografisk sikre tilfeldige tall. API-en gir også funksjoner for å generere og administrere nøkler.
  • N-API (API for utvikling av tillegg) er oppdatert til versjon 8.
  • Overgangen til den nye utgivelsen av pakkebehandleren NPM 7.10 er gjort.
  • Stabiliserte implementeringen av AbortController-klassen, som er basert på AbortController Web API og lar signaler kanselleres i utvalgte Promise-baserte APIer.
  • Støtte for den tredje versjonen av kildekartformatet, som brukes til å sammenligne genererte, bearbeidede eller pakkede moduler med den originale kildekoden, er stabilisert.
  • For kompatibilitet med eldre nett-API-er er metodene buffer.atob(data) og buffer.btoa(data) lagt til.
  • Dannelsen av forsamlinger for nye Apple-enheter utstyrt med M1 ARM-brikken har begynt.
  • På Linux-plattformen er kravene til kompilatorversjon hevet til GCC 8.3.

La oss huske at Node.js-plattformen kan brukes både for serverstøtte for webapplikasjoner og for å lage vanlige klient- og servernettverksprogrammer. For å utvide funksjonaliteten til applikasjoner for Node.js er det utarbeidet en stor samling av moduler, der du kan finne moduler med implementering av HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3-servere og klienter, moduler for integrasjon med ulike web-rammeverk, WebSocket- og Ajax-behandlere , koblinger til DBMS (MySQL, PostgreSQL, SQLite, MongoDB), malmotorer, CSS-motorer, implementeringer av kryptografiske algoritmer og autorisasjonssystemer (OAuth), XML-parsere.

For å håndtere et stort antall parallelle forespørsler, bruker Node.js en asynkron kodeutførelsesmodell basert på ikke-blokkerende hendelsesbehandling og definering av tilbakeringingsbehandlere. Støttede metoder for multipleksing av tilkoblinger inkluderer epoll, kqueue, /dev/poll og select. For å multiplekse tilkoblinger brukes libuv-biblioteket, som er et tillegg til libev på Unix-systemer og til IOCP på Windows. Libeio-biblioteket brukes til å lage en trådpool, og c-ares er integrert for å utføre DNS-spørringer i en ikke-blokkerende modus. Alle systemanrop som forårsaker blokkering utføres i trådbasen og sender deretter, i likhet med signalbehandlere, resultatet av arbeidet tilbake gjennom et ikke navngitt rør. Utførelse av JavaScript-kode sikres gjennom bruk av V8-motoren utviklet av Google (i tillegg utvikler Microsoft en versjon av Node.js med Chakra-Core-motoren).

I kjernen ligner Node.js på Perl AnyEvent, Ruby Event Machine, Python Twisted-rammeverket og implementeringen av hendelser i Tcl, men hendelsesløkken i Node.js er skjult for utvikleren og ligner hendelsesbehandling i en nettapplikasjon kjører i nettleseren. Når du skriver applikasjoner for node.js, er det nødvendig å ta hensyn til detaljene ved hendelsesdrevet programmering, for eksempel, i stedet for å gjøre "var result = db.query("select..");" med å vente på ferdigstillelse av arbeidet og påfølgende behandling av resultatene, bruker Node.js prinsippet om asynkron utførelse, dvs. koden transformeres til "db.query("velg..", funksjon (resultat) {resultatbehandling});", der kontrollen umiddelbart vil gå over til videre kode, og søkeresultatet vil bli behandlet etter hvert som data kommer.

I tillegg kan det bemerkes at Deno-selskapet, grunnlagt av skaperen av Node.js for å utvikle neste generasjons Deno-plattform, mottok 4.9 millioner dollar i investeringer. I sin hensikt ligner Deno på Node.js, men den prøver å eliminere de konseptuelle feilene som er gjort i Node.js-arkitekturen og gi brukerne et sikrere miljø. Det bemerkes at Denos forretningsløsninger vil bygges på helt åpne produkter, og Open Core-modellen med separat betalt funksjonalitet oppfattes som uakseptabel for Deno-plattformen.

Kilde: opennet.ru

Legg til en kommentar