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

tog sted релиз Node.js 14.0,platforme til at køre netværksapplikationer i JavaScript. Node.js 14.0 er en langsigtet supportgren, men denne status vil først blive tildelt i oktober efter stabilisering. Node.js 14.0 vil blive understøttet udføres indtil april 2023. Vedligeholdelse af den tidligere LTS-gren af ​​Node.js 12.0 varer indtil april 2022 og året før sidste LTS-gren 10.0 indtil april 2021. Supporten til 13.x staging-grenen slutter i juni i år.

The main forbedring:

  • Evnen til at generere i farten eller ved forekomsten af ​​visse hændelser er blevet stabiliseret diagnostiske rapporter, som viser hændelser, der hjælper med at diagnosticere problemer såsom nedbrud, ydeevneforringelse, hukommelseslækager, tung CPU-belastning, uventet fejloutput osv.
  • Tilføjet eksperimentel API-understøttelse Asynkron lokal lagring med implementeringen af ​​klassen AsyncLocalStorage, som kan bruges til at skabe asynkron tilstand med handlere baseret på tilbagekaldskald og løfter. AsyncLocalStorage giver dig mulighed for at gemme data, mens en webanmodning behandles, hvilket minder om tråd-lokal lagring på andre sprog.
  • Fjernet advarselsmeddelelse om eksperimentel funktion ved indlæsning moduler ECMAScript 6 forbundet og eksporteret ved hjælp af import- og eksporterklæringer. Samtidig forbliver selve implementeringen af ​​ESM-moduler eksperimentel.
  • V8 motor opdateret til version 8.1 (1, 2, 3), som inkluderer nye ydelsesoptimeringer og funktioner såsom den nye logiske sammenkædningsoperator "??" (returnerer den højre operand, hvis den venstre operand er NULL eller udefineret, og omvendt), "?."-operatoren for en engangskontrol af hele kæden af ​​egenskaber eller opkald (f.eks. "db?.bruger?.navn?.længde" uden foreløbige kontroller), Intl.DisplayName-metoden til at opnå lokaliserede navne osv.
  • En revision af Streams API blev udført med det formål at forbedre sammenhængen i Streams API'erne og eliminere forskelle i adfærden af ​​de grundlæggende dele af Node.js. For eksempel er adfærden for http.OutgoingMessage tæt på stream.Writable, og net.Socket ligner stream.Duplex. AutoDestroy-indstillingen er som standard indstillet til "true", hvilket betyder, at man kalder "_destroy" efter afslutning.
  • Tilføjet eksperimentel API-understøttelse VAR JEG (WebAssembly System Interface), der leverer softwaregrænseflader til direkte interaktion med operativsystemet (POSIX API til at arbejde med filer, sockets osv.).
  • Øgede krav til minimale versioner compilere og platforme: macOS 10.13 (High Sierra), GCC 6, Windows nyere 7/2008R2.

Lad os huske på, at Node.js-platformen kan bruges både til serversideunderstøttelse af webapplikationer og til at skabe almindelige klient- og servernetværksprogrammer. For at udvide funktionaliteten af ​​applikationer til Node.js skal et stort antal samling af moduler, hvori du kan finde moduler med implementering af servere og klienter HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, 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 håndtere et stort antal parallelle anmodninger, bruger Node.js en asynkron kodeeksekveringsmodel baseret på ikke-blokerende hændelsesbehandling og definering af tilbagekaldsbehandlere. Understøttede metoder til multipleksing af forbindelser inkluderer epoll, kqueue, /dev/poll og select. Biblioteket bruges til at multiplekse forbindelser libuv, som er en overbygning forbi libev på Unix-systemer og over IOCP på Windows. Et bibliotek bruges til at oprette en trådpulje libeio, til udførelse af DNS-forespørgsler i ikke-blokerende tilstand er integreret c-ares. Alle systemkald, der forårsager blokering, udføres i trådpuljen og sender derefter, ligesom signalbehandlere, resultatet af deres arbejde tilbage gennem et unavngivet rør. Udførelse af JavaScript-kode sikres ved brug af en motor udviklet af Google V8 (Desuden er Microsoft ved at udvikle en version af Node.js med Chakra-Core-motoren).

I sin kerne ligner Node.js rammer Perl AnyEvent, Ruby Event Machine, Python snoet и implementering hændelser i Tcl, men hændelsesløkken i Node.js er skjult for udvikleren og ligner hændelseshåndtering i en webapplikation, der kører i en browser. Når du skriver applikationer til node.js, er det nødvendigt at tage højde for detaljerne ved begivenhedsdrevet programmering, for eksempel i stedet for at gøre "var result = db.query("select..");" med afventning af arbejdets afslutning og efterfølgende bearbejdning af resultaterne, anvender Node.js princippet om asynkron eksekvering, dvs. koden omdannes til "db.query("vælg..", funktion (resultat) {resultatbehandling});", hvor kontrollen straks vil gå videre til yderligere kode, og forespørgselsresultatet vil blive behandlet efterhånden som data ankommer. .

Kilde: opennet.ru

Tilføj en kommentar