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

Ledig релиз Node.js 13.0,platforme til at køre netværksapplikationer i JavaScript. Samtidig er stabiliseringen af ​​den tidligere gren af ​​Node.js 12.x gennemført, som er blevet overført til kategorien langsigtede supportudgivelser, hvortil opdateringer udgives i 4 år. Support til den tidligere LTS-gren af ​​Node.js 10.0 vil vare indtil april 2021, og support til den sidste LTS-gren 8.0 indtil januar 2020.

The main forbedring:

  • V8 motor opdateret til version 7.8, som bruger nye ydelsesoptimeringsteknikker, forbedrer objektdestrukturering, reducerer hukommelsesforbrug og reducerer forberedelsestid til WebAssembly-udførelse;
  • Fuld understøttelse af internationalisering og biblioteksbaseret Unicode er aktiveret som standard ICU (International Components for Unicode), som giver udviklere mulighed for at skrive kode støtte arbejde med forskellige sprog og lokaliteter. Full-icu-modulet er nu installeret som standard;
  • API stabiliseret Arbejder tråde, tillader oprette flertrådede begivenhedsløkker. Implementeringen er baseret på worker_threads-modulet, som giver dig mulighed for at køre JavaScript-kode i flere parallelle tråde. Stabil understøttelse af Workers Threads API er også blevet backporteret til LTS-grenen af ​​Node.js 12.x;
  • Kravene til platforme er blevet øget. At samle nu påkrævet mindst macOS 10.11 (kræver Xcode 10), AIX 7.2, Ubuntu 16.04, Debian 9, EL 7, Alpine 3.8, Windows 7/2008;
  • Forbedret understøttelse af Python 3. Hvis systemet både har Python 2 og Python 3, bruges Python 2 stadig, men muligheden for at bygge, når kun Python 3 er installeret på systemet, er tilføjet;
  • Den gamle implementering af HTTP-parseren ("—http-parser=legacy") er blevet fjernet. Fjernede eller forældede kald og egenskaber FSWatcher.prototype.start(), ChildProcess._channel, open()-metode i ReadStream- og WriteStream-objekter, request.connection, response.connection, module.createRequireFromPath();
  • efter kom ud opdatering 13.0.1, som hurtigt rettede flere fejl. Især problemet med at npm 6.12.0 viser en advarsel om brug af en ikke-understøttet version er blevet løst.

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