Server-side JavaScript Node.js 13.0 release

Tillgängliga släpp Node.js 13.0,plattformar för att köra nätverksapplikationer i JavaScript. Samtidigt har stabiliseringen av den tidigare grenen av Node.js 12.x slutförts, som har överförts till kategorin långsiktiga supportutgåvor, för vilka uppdateringar släpps i 4 år. Stödet för den tidigare LTS-grenen av Node.js 10.0 kommer att pågå till april 2021, och stöd för den sista LTS-grenen 8.0 till januari 2020.

Den huvudsakliga förbättringar:

  • V8-motor uppdaterad till version 7.8, som använder nya prestandaoptimeringstekniker, förbättrar objektdestrukturering, minskar minnesförbrukningen och minskar förberedelsetiden för WebAssembly-körning;
  • Fullständigt stöd för internationalisering och biblioteksbaserad Unicode är aktiverat som standard ICU (International Components for Unicode), som gör att utvecklare kan skriva kod stödjande arbeta med olika språk och lokaler. Full-icu-modulen är nu installerad som standard;
  • API stabiliserats Trådar för arbetare, tillåter skapa flertrådade händelseloopar. Implementeringen är baserad på modulen worker_threads, som låter dig köra JavaScript-kod i flera parallella trådar. Stabilt stöd för Workers Threads API har också backporterats till LTS-grenen av Node.js 12.x;
  • Kraven på plattformar har höjts. För montering nu krävs minst macOS 10.11 (kräver Xcode 10), AIX 7.2, Ubuntu 16.04, Debian 9, EL 7, Alpine 3.8, Windows 7/2008;
  • Förbättrat stöd för Python 3. Om systemet har både Python 2 och Python 3 används fortfarande Python 2, men möjligheten att bygga när endast Python 3 är installerad på systemet har lagts till;
  • Den gamla implementeringen av HTTP-tolkaren ("—http-parser=legacy") har tagits bort. Borttagna eller utfasade anrop och egenskaper FSWatcher.prototype.start(), ChildProcess._channel, open()-metod i ReadStream- och WriteStream-objekt, request.connection, response.connection, module.createRequireFromPath();
  • efter kom ut uppdatering 13.0.1, som snabbt fixade flera buggar. I synnerhet har problemet med att npm 6.12.0 visar en varning om att använda en version som inte stöds lösts.

Låt oss komma ihåg att Node.js-plattformen kan användas både för serverstöd för webbapplikationer och för att skapa vanliga klient- och servernätverksprogram. För att utöka funktionaliteten av applikationer för Node.js, ett stort antal samling av moduler, där du kan hitta moduler med implementering av servrar och klienter HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, moduler för integration med olika webbramverk, WebSocket och Ajax-hanterare, kopplingar till DBMS (MySQL, PostgreSQL, SQLite , MongoDB ), mallmotorer, CSS-motorer, implementeringar av kryptografiska algoritmer och auktoriseringssystem (OAuth), XML-tolkare.

För att hantera ett stort antal parallella förfrågningar använder Node.js en asynkron kodexekveringsmodell baserad på icke-blockerande händelsebearbetning och definierande av återuppringningshanterare. Metoder som stöds för multiplexering av anslutningar inkluderar epoll, kqueue, /dev/poll och select. Biblioteket används för att multiplexa anslutningar libuv, som är en överbyggnad över libev på Unix-system och över IOCP på Windows. Ett bibliotek används för att skapa en trådpool libeio, för att utföra DNS-frågor i icke-blockerande läge är integrerad c-ares. Alla systemanrop som orsakar blockering exekveras inom trådpoolen och skickar sedan, som signalhanterare, resultatet av sitt arbete tillbaka genom ett namnlöst rör. Exekvering av JavaScript-kod säkerställs genom användning av en motor som utvecklats av Google V8 (Dessutom utvecklar Microsoft en version av Node.js med Chakra-Core-motorn).

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

Källa: opennet.ru

Lägg en kommentar