Server-side JavaScript Node.js 13.0 release

Beschikbaar релиз Knooppunt.js 13.0,platforms voor het uitvoeren van netwerkapplicaties in JavaScript. Tegelijkertijd is de stabilisatie van de vorige tak van Node.js 12.x voltooid, die is overgebracht naar de categorie ondersteuningsreleases op lange termijn, waarvoor updates gedurende 4 jaar worden uitgebracht. Ondersteuning voor de vorige LTS-tak van Node.js 10.0 duurt tot april 2021, en ondersteuning voor de laatste LTS-tak 8.0 tot januari 2020.

De belangrijkste verbeteringen:

  • V8-motor bijgewerkt naar versie 7.8, dat nieuwe technieken voor prestatie-optimalisatie gebruikt, de destructurering van objecten verbetert, het geheugenverbruik vermindert en de voorbereidingstijd voor de uitvoering van WebAssembly verkort;
  • Volledige ondersteuning voor internationalisering en bibliotheekgebaseerde Unicode is standaard ingeschakeld ICU (International Components for Unicode), waarmee ontwikkelaars code kunnen schrijven ondersteunend werken met verschillende talen en landinstellingen. De full-icu-module is nu standaard geïnstalleerd;
  • API gestabiliseerd Werknemersdraden, toelaten maak gebeurtenislussen met meerdere threads. De implementatie is gebaseerd op de worker_threads module, waarmee u JavaScript-code in meerdere parallelle threads kunt uitvoeren. Stabiele ondersteuning voor de Workers Threads API is ook teruggezet naar de LTS-tak van Node.js 12.x;
  • De vereisten voor platforms zijn verhoogd. Nu voor montage nodig minimaal macOS 10.11 (vereist Xcode 10), AIX 7.2, Ubuntu 16.04, Debian 9, EL 7, Alpine 3.8, Windows 7/2008;
  • Verbeterde ondersteuning voor Python 3. Als het systeem zowel Python 2 als Python 3 heeft, wordt Python 2 nog steeds gebruikt, maar de mogelijkheid om te bouwen wanneer alleen Python 3 op het systeem is geïnstalleerd, is toegevoegd;
  • De oude implementatie van de HTTP-parser (“—http-parser=legacy”) is verwijderd. Aanroepen en eigenschappen FSWatcher.prototype.start(), ChildProcess._channel, open() methode in ReadStream- en WriteStream-objecten, request.connection, response.connection, module.createRequireFromPath(); verwijderd of verouderd;
  • na kwam uit update 13.0.1, waarmee snel verschillende bugs werden opgelost. In het bijzonder is het probleem opgelost waarbij npm 6.12.0 een waarschuwing weergeeft over het gebruik van een niet-ondersteunde versie.

Bedenk dat het Node.js-platform zowel kan worden gebruikt voor serveronderhoud van webapplicaties als voor het maken van gewone client- en servernetwerkprogramma's. Om de functionaliteit van applicaties voor Node.js uit te breiden, is een groot verzameling modules, waarin u modules kunt vinden met de implementatie van HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3-servers en -clients, modules voor integratie met verschillende webframeworks, WebSocket- en Ajax-handlers, connectoren naar DBMS (MySQL, PostgreSQL, SQLite , MongoDB), sjabloon-engines, CSS-engines, implementaties van crypto-algoritmen en autorisatiesystemen (OAuth), XML-parsers.

Om de verwerking van een groot aantal parallelle verzoeken te garanderen, gebruikt Node.js een asynchrone code-uitvoeringsmodel gebaseerd op niet-blokkerende gebeurtenisafhandeling en de definitie van callback-handlers. Ondersteunde methoden voor het multiplexen van verbindingen zijn epoll, kqueue, /dev/poll en select. De bibliotheek wordt gebruikt voor multiplexverbindingen libuv, waar een bovenbouw overheen zit libev op Unix-systemen en via IOCP op Windows. De bibliotheek wordt gebruikt om een ​​threadpool te maken vrij, om DNS-query's in niet-blokkerende modus geïntegreerd uit te voeren c-aren. Alle systeemaanroepen die blokkering veroorzaken, worden binnen de threadpool uitgevoerd en sturen vervolgens, net als signaalbehandelaars, het resultaat van hun werk terug via een naamloze pijp (pipe). De uitvoering van JavaScript-code wordt verzorgd door het gebruik van een door Google ontwikkelde engine V8 (Daarnaast ontwikkelt Microsoft een Node.js-variant met de Chakra-Core-engine).

In de kern is Node.js vergelijkbaar met frameworks. Perl AnyEvent, Ruby evenementenmachine, Python gedraaid и implementatie gebeurtenissen in Tcl, maar de gebeurtenislus in Node.js is verborgen voor de ontwikkelaar en lijkt op gebeurtenisafhandeling in een webtoepassing die in een browser wordt uitgevoerd. Wanneer u toepassingen voor node.js schrijft, moet u bijvoorbeeld rekening houden met de specifieke kenmerken van gebeurtenisgestuurd programmeren, in plaats van "var result = db.query("select..");" met wachten op voltooiing van het werk en daaropvolgende verwerking van resultaten, gebruikt Node.js het principe van asynchrone uitvoering, d.w.z. de code wordt omgezet in "db.query("select..", function (result) {result processing});", waarin de controle onmiddellijk wordt doorgegeven aan verdere code en het queryresultaat wordt verwerkt zodra de gegevens binnenkomen. .

Bron: opennet.ru

Voeg een reactie