Frigivelse af server-side JavaScript-platform Node.js 16.0

Node.js 16.0, en platform til at køre netværksapplikationer i JavaScript, blev frigivet. Node.js 16.0 er klassificeret som en langsigtet supportgren, men denne status vil først blive tildelt i oktober efter stabilisering. Node.js 16.0 vil blive understøttet indtil april 2023. Vedligeholdelse af den tidligere LTS-gren af ​​Node.js 14.0 varer indtil april 2023 og året før sidste LTS-gren 12.0 indtil april 2022. Support til 10.0 LTS-filialen vil blive afbrudt om 10 dage.

Vigtigste forbedringer:

  • V8-motoren er blevet opdateret til version 9.0 (Node.js 15 brugte version 8.6), som tillader implementering af funktioner såsom egenskaben "indekser" for regulære udtryk (inkluderer en matrix med start- og slutpositioner for grupper af kampe) , Atomics-metoden i Node.js 16 .waitAsync (async-version af Atomics.wait), understøttelse af brug af nøgleordet await i topniveau-moduler. Funktionskald er blevet fremskyndet i situationer, hvor antallet af beståede argumenter ikke svarer til de parametre, der er defineret i funktionen.
  • Timers Promises API er blevet stabiliseret, hvilket giver et alternativt sæt funktioner til at arbejde med timere, der returnerer Promise-objekter som output, hvilket eliminerer behovet for at bruge util.promisify(). importer { setTimeout } fra 'timere/løfter'; asynkron funktion run() { await setTimeout(5000); console.log('Hej, verden!'); } løb();
  • En eksperimentel implementering af Web Crypto API er blevet tilføjet, designet til at udføre grundlæggende kryptografiske operationer på siden af ​​webapplikationer, såsom manipulation af kryptografiske hashes, generering og verifikation af digitale signaturer, kodning og afkodning af data ved hjælp af forskellige krypteringsmetoder og generering af kryptografisk sikker tilfældige tal. API'en indeholder også funktioner til generering og styring af nøgler.
  • N-API (API til udvikling af tilføjelser) er blevet opdateret til version 8.
  • Overgangen til den nye udgivelse af pakkehåndteringen NPM 7.10 er foretaget.
  • Stabiliserede implementeringen af ​​AbortController-klassen, som er baseret på AbortController Web API og gør det muligt at annullere signaler i udvalgte Promise-baserede API'er.
  • Understøttelse af den tredje version af Source Map-formatet, der bruges til at sammenligne genererede, behandlede eller pakkede moduler med den originale kildekode, er blevet stabiliseret.
  • For kompatibilitet med ældre web-API'er er metoderne buffer.atob(data) og buffer.btoa(data) blevet tilføjet.
  • Dannelsen af ​​samlinger til nye Apple-enheder udstyret med M1 ARM-chippen er begyndt.
  • På Linux-platformen er kravene til compilerversion blevet hævet til GCC 8.3.

Lad os huske på, at Node.js-platformen kan bruges både til serverunderstøttelse af webapplikationer og til at skabe almindelige klient- og servernetværksprogrammer. For at udvide funktionaliteten af ​​applikationer til Node.js er der udarbejdet en stor samling af moduler, hvori du kan finde moduler med implementering af HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 servere og klienter, moduler til integration med forskellige web-frameworks, WebSocket- og Ajax-handlere, connectors til DBMS (MySQL, PostgreSQL, SQLite, MongoDB), skabelonmotorer, CSS-motorer, implementeringer af kryptografiske algoritmer og autorisationssystemer (OAuth), XML-parsere.

For at sikre behandlingen af ​​et stort antal parallelle anmodninger, bruger Node.js en asynkron kodeeksekveringsmodel baseret på ikke-blokerende hændelseshåndtering og definitionen af ​​tilbagekaldsbehandlere. Understøttede metoder til multipleksing af forbindelser er epoll, kqueue, /dev/poll og select. Til forbindelsesmultipleksing bruges libuv-biblioteket, som er en tilføjelse til libev på Unix-systemer og IOCP på Windows. Libeio-biblioteket bruges til at oprette en trådpulje, og c-ares er integreret til at udføre DNS-forespørgsler i ikke-blokerende tilstand. Alle systemkald, der forårsager blokering, udføres inde i trådpuljen og overfører derefter, ligesom signalbehandlere, resultatet af deres arbejde tilbage gennem et unavngivet rør (rør). Udførelsen af ​​JavaScript-kode leveres gennem brugen af ​​V8-motoren udviklet af Google (derudover udvikler Microsoft en version af Node.js med Chakra-Core-motoren).

I sin kerne ligner Node.js Perl AnyEvent, Ruby Event Machine, Python Twisted-frameworks og Tcl-begivenhedsimplementeringen, men hændelsesløkken i Node.js er skjult for udvikleren og ligner hændelseshåndtering i en webapplikation, der kører i browser. Når du skriver applikationer til node.js, skal du tage højde for de særlige forhold ved begivenhedsdrevet programmering, for eksempel i stedet for at gøre "var result = db.query("select..");" med afventning af afslutning af arbejde og efterfølgende behandling af resultater, anvender Node.js princippet om asynkron eksekvering, dvs. koden transformeres til "db.query("vælg..", funktion (resultat) {resultatbehandling});", hvor kontrollen øjeblikkeligt overføres til yderligere kode, og forespørgselsresultatet vil blive behandlet efterhånden som data ankommer.

Derudover kan det bemærkes, at Deno-virksomheden, grundlagt af skaberen af ​​Node.js for at udvikle næste generation af Deno-platformen, modtog $4.9 millioner i investeringer. I sit formål ligner Deno Node.js, men den forsøger at eliminere de konceptuelle fejl, der er lavet i Node.js-arkitekturen og give brugerne et mere sikkert miljø. Det bemærkes, at Denos forretningsløsninger vil blive bygget på helt åbne produkter, og Open Core-modellen med separat betalt funktionalitet opfattes som uacceptabel for Deno-platformen.

Kilde: opennet.ru

Tilføj en kommentar