Lancering van de servergerichte JavaScript-platform Node.js 13.0

Beschikbaar release Node.js 13.0, platforms voor het uitvoeren van netwerptoepassingen in de programmeertaal JavaScript. Tegelijkertijd is de stabilisatie van de vorige tak Node.js 12.x afgerond, die is overgebracht naar de categorie van releases met langdurige ondersteuning, waarvan de updates gedurende 4 jaar worden uitgegeven. De ondersteuning van de vorige LTS-tak Node.js 10.0 loopt tot april 2021, en die van de eerder LTS-tak 8.0 tot januari 2020.

Belangrijkste verbeteringen:

  • De V8-engine is bijgewerkt naar versie 7.8, waarin nieuwe methoden voor prestatie-optimalisatie zijn geĆÆmplementeerd, de destructuring van objecten is verbeterd, het geheugengebruik is verminderd en de voorbereidingstijd voor WebAssembly is verkort;
  • Volledige ondersteuning voor internationalisering en Unicode via de bibliotheken ICU (International Components for Unicode), waardoor ontwikkelaars code kunnen schrijven die ondersteunt het werken met verschillende talen en lokale instellingen. De module full-icu is nu standaard geĆÆnstalleerd;
  • De API is gestabiliseerd Workers Threads, die om multi-threaded event loops te creĆ«ren. De implementatie is gebaseerd op de module worker_threads, die het mogelijk maakt om JavaScript-code in meerdere parallelle threads uit te voeren. De stabiele ondersteuning voor de API Workers Threads is ook teruggepoort naar de LTS-tak Node.js 12.x;
  • De platformvereisten zijn verhoogd. Voor assemblage is nu is vereist minimaal macOS 10.11 (Xcode 10 is vereist), AIX 7.2, Ubuntu 16.04, Debian 9, EL 7, Alpine 3.8, Windows 7/2008;
  • De ondersteuning voor Python 3 is verbeterd. Bij aanwezigheid van zowel Python 2 als Python 3 wordt nog steeds Python 2 gebruikt, maar er is een mogelijkheid toegevoegd om te assembleren met alleen Python 3 in het systeem;
  • De oude implementatie van de HTTP-parser (ā€˜--http-parser=legacy’) is verwijderd. Verouderde aanroepen en eigenschappen zoals FSWatcher.prototype.start(), ChildProcess._channel, de open() methode in ReadStream en WriteStream objecten, request.connection, response.connection, module.createRequireFromPath(); zijn verwijderd of gemarkeerd als verouderd.
  • Daarna is het update 13.0.1 uitgebracht, waarin verschillende bugs onmiddellijk zijn verholpen. Onder andere is het probleem opgelost met de melding in npm 6.12.0 over het gebruik van een niet-ondersteunde versie.

Ter herinnering, het Node.js-platform kan worden gebruikt voor zowel serverondersteuning van Webtoepassingen als voor het maken van algemene client- en servernetwerkprogramma's. Voor het uitbreiden van de functionaliteit van Node.js-toepassingen is er een grote collectie modules, waarin modules kunnen worden gevonden voor de implementatie van HTTP-, SMTP-, XMPP-, DNS-, FTP-, IMAP-, POP3-servers en clients, modules voor integratie met verschillende webframeworks, WebSocket- en Ajax-handlers, connectors naar databases (MySQL, PostgreSQL, SQLite, MongoDB), template engines, CSS-templates, implementaties van cryptografie-algoritmen en autorisatiesystemen (OAuth), XML-parsers.

Om een groot aantal gelijktijdige verzoeken te verwerken, maakt Node.js gebruik van een asynchroon model voor code-uitvoering, gebaseerd op event-driven processing in een niet-blokkende modus en het definiëren van callback-handlers. Ondersteunde multiplexingmethoden zijn epoll, kqueue, /dev/poll en select. Voor multiplexing van verbindingen wordt de bibliotheek libuv, die een laag boven libev , in Unix-systemen en boven IOCP in Windows is. Voor het creëren van een thread pool wordt de bibliotheek libeio, voor het uitvoeren van DNS-verzoeken in een niet-blokkende modus is geïntegreerd c-ares. Alle systeemaanroepen die blokkeren, worden uitgevoerd binnen de thread pool en vervolgens, net als de signal handlers, wordt het resultaat van hun werk teruggegeven via een unnamed pipe. De uitvoering van JavaScript-code wordt mogelijk gemaakt door de engine V8 ontwikkeld door Google (bovendien ontwikkelt Microsoft een versie van Node.js met de Chakra-Core engine).

In wezen lijkt Node.js op de frameworks Perl AnyEvent, Ruby Event Machine, Python Twisted en implementation evenementen in Tcl, maar de event loop in Node.js is verborgen voor de ontwikkelaar en lijkt op event processing in een webapplicatie die in een browser draait. Bij het schrijven van applicaties voor node.js is het belangrijk om rekening te houden met de specificiteit van event-driven programming. In plaats van "var result = db.query('select..');" te schrijven en te wachten op de voltooiing en vervolgens de resultaten te verwerken, gebruikt men in Node.js het principe van asynchrone uitvoering, d.w.z. de code wordt getransformeerd in "db.query('select..', function (result) {result verwerken});", waarbij de controle onmiddellijk overgaat naar de volgende code, en het resultaat van de query wordt verwerkt zodra de gegevens beschikbaar zijn.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster