Server-side JavaScript Node.js 16.0 release

Node.js 16.0 is uitgebracht, een platform voor het uitvoeren van netwerkapplicaties in JavaScript. Node.js 16.0 is geclassificeerd als een ondersteuningstak voor de lange termijn, maar deze status zal pas in oktober worden toegewezen, na stabilisatie. Node.js 16.0 wordt ondersteund tot april 2023. Het onderhoud van de vorige LTS-tak van Node.js 14.0 duurt tot april 2023, en het jaar daarvoor de laatste LTS-tak 12.0 tot april 2022. Ondersteuning voor de 10.0 LTS-tak wordt over tien dagen stopgezet.

Belangrijkste verbeteringen:

  • De V8-engine is bijgewerkt naar versie 9.0 (Node.js 15 gebruikte release 8.6), waarmee functies kunnen worden geïmplementeerd zoals de eigenschap "indices" voor reguliere expressies (inclusief een array met de begin- en eindposities van groepen overeenkomsten) , de Atomics-methode in Node.js 16 .waitAsync (asynchrone versie van Atomics.wait), ondersteuning voor het gebruik van het trefwoord await in modules op het hoogste niveau. Functieaanroepen zijn versneld in situaties waarin het aantal doorgegeven argumenten niet overeenkomt met de parameters die in de functie zijn gedefinieerd.
  • De Timers Promises API is gestabiliseerd en biedt een alternatieve reeks functies voor het werken met timers die Promise-objecten als uitvoer retourneren, waardoor het gebruik van util.promisify() niet meer nodig is. importeer { setTimeout } uit 'timers/beloften'; asynchrone functie run() {wacht op setTimeout(5000); console.log('Hallo wereld!'); } loop();
  • Er is een experimentele implementatie van de Web Crypto API toegevoegd, ontworpen om elementaire cryptografische bewerkingen uit te voeren aan de kant van webapplicaties, zoals het manipuleren van cryptografische hashes, het genereren en verifiëren van digitale handtekeningen, het coderen en decoderen van gegevens met behulp van verschillende encryptiemethoden, en het genereren van cryptografisch veilige willekeurige nummers. De API biedt ook functies voor het genereren en beheren van sleutels.
  • N-API (API voor het ontwikkelen van add-ons) is bijgewerkt naar versie 8.
  • De overstap naar de nieuwe release van pakketbeheerder NPM 7.10 is gemaakt.
  • Stabilisatie van de implementatie van de klasse AbortController, die is gebaseerd op de AbortController Web API en waarmee signalen kunnen worden geannuleerd in geselecteerde op Promise gebaseerde API's.
  • Ondersteuning voor de derde versie van het Source Map-formaat, dat wordt gebruikt om gegenereerde, verwerkte of verpakte modules te vergelijken met de originele broncode, is gestabiliseerd.
  • Voor compatibiliteit met oudere web-API's zijn de methoden buffer.atob(data) en buffer.btoa(data) toegevoegd.
  • De vorming van assemblages voor nieuwe Apple-apparaten uitgerust met de M1 ARM-chip is begonnen.
  • Op het Linux-platform zijn de vereisten voor de compilerversie verhoogd naar GCC 8.3.

Laten we niet vergeten dat het Node.js-platform zowel kan worden gebruikt voor serverondersteuning 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 grote verzameling modules voorbereid, 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 voor DBMS (MySQL, PostgreSQL, SQLite, MongoDB), template-engines, CSS-engines, implementaties van cryptografische algoritmen en autorisatiesystemen (OAuth), XML-parsers.

Om de verwerking van een groot aantal parallelle verzoeken te garanderen, gebruikt Node.js een asynchrone code-uitvoeringsmodel op basis van niet-blokkerende gebeurtenisafhandeling en de definitie van callback-handlers. Ondersteunde methoden voor multiplexverbindingen zijn epoll, kqueue, /dev/poll en select. Voor verbindingsmultiplexing wordt de libuv-bibliotheek gebruikt, een add-on voor libev op Unix-systemen en IOCP op Windows. De libeio-bibliotheek wordt gebruikt om een ​​threadpool te maken en c-ares is geïntegreerd om DNS-query's in niet-blokkerende modus uit te voeren. Alle systeemaanroepen die blokkering veroorzaken, worden uitgevoerd binnen de threadpool en dragen vervolgens, net als signaalbehandelaars, het resultaat van hun werk terug via een naamloze pijp (pijp). De uitvoering van JavaScript-code wordt verzorgd door het gebruik van de V8-engine die is ontwikkeld door Google (daarnaast ontwikkelt Microsoft een versie van Node.js met de Chakra-Core-engine).

In de kern is Node.js vergelijkbaar met de Perl AnyEvent, Ruby Event Machine, Python Twisted-frameworks en de Tcl-gebeurtenisimplementatie, maar de gebeurtenislus in Node.js is verborgen voor de ontwikkelaar en lijkt op het afhandelen van gebeurtenissen in een webtoepassing die wordt uitgevoerd in browser. Bij het schrijven van applicaties voor node.js 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 getransformeerd in "db.query("select..", function (result) {result processing});", waarin de besturing onmiddellijk wordt doorgegeven aan verdere code, en het queryresultaat wordt verwerkt zodra er gegevens binnenkomen.

Bovendien kan worden opgemerkt dat het bedrijf Deno, opgericht door de maker van Node.js om het Deno-platform van de volgende generatie te ontwikkelen, $ 4.9 miljoen aan investeringen ontving. In zijn doel is Deno vergelijkbaar met Node.js, maar het probeert de conceptuele fouten in de Node.js-architectuur te elimineren en gebruikers een veiligere omgeving te bieden. Opgemerkt wordt dat de bedrijfsoplossingen van Deno zullen worden gebouwd op volledig open producten, en het Open Core-model met afzonderlijke betaalde functionaliteit wordt als onaanvaardbaar ervaren voor het Deno-platform.

Bron: opennet.ru

Voeg een reactie