De server-side JavaScript-platform Node.js 18.0 is beschikbaar.

Node.js 18.0 is uitgebracht, een platform voor het uitvoeren van netwerkapplicaties in JavaScript. Node.js 18.0 is ingedeeld als een long-term support (LTS) versie, maar deze status zal pas in oktober worden toegekend, na stabilisatie. Ondersteuning voor Node.js 18.x zal doorgaan tot april 2025. De ondersteuning voor de vorige LTS-versie, Node.js 16.x, zal doorgaan tot april 2024, en voor de oudere LTS-versie 14.x tot april 2023. De ondersteuning voor de LTS-versie 12.x stopt op 30 april, en voor de tussentijdse versie Node.js 17.x op 1 juni.

Hoofdverbeteringen:

  • De V8-engine is bijgewerkt naar versie 10.1, die wordt gebruikt in Chromium 101. In vergelijking met de release van Node.js 17.9.0 zijn er nieuwe functies toegevoegd, zoals de methoden findLast en findLastIndex voor het zoeken naar elementen vanaf het einde van een array, en de functie Intl.supportedValuesOf. De API Intl.Locale is verbeterd. De initialisatie van klassevelden en privé-methoden is versneld.
  • De experimentele API fetch() is standaard ingeschakeld, bedoeld voor het laden van resources via het netwerk. De implementatie is gebaseerd op de code van de HTTP/1.1 client undici en is zo dicht mogelijk benaderd als de vergelijkbare API's die in browsers worden aangeboden. Dit omvat ondersteuning voor de interfaces FormData, Headers, Request en Response voor het manipuleren van HTTP-headers van verzoeken en antwoorden. const res = await fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = await res.json(); console.log(data); }
  • Er is een experimentele implementatie van de Web Streams API toegevoegd, die toegang biedt tot datastreams die via het netwerk zijn ontvangen. De API maakt het mogelijk om eigen handlers toe te voegen om te werken met gegevens terwijl deze binnenkomen, zonder te wachten tot het hele bestand is geladen. In Node.js zijn nu beschikbare objecten zoals ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream en DecompressionStream.
  • De API Blob is nu stabiel, waarmee onveranderlijke rauwe gegevens kunnen worden ingekapseld voor veilig gebruik in verschillende werkstromen.
  • De API BroadcastChannel is nu stabiel, waarmee asynchrone berichtuitwisseling kan worden georganiseerd in een 'één verzender - veel ontvangers'-formaat.
  • De experimentele module node:test is toegevoegd voor het maken en uitvoeren van tests in JavaScript, die resultaten in het TAP (Test Anything Protocol) formaat retourneren.
  • Kant-en-klare builds zijn beschikbaar gesteld voor Red Hat Enterprise Linux (RHEL) 8 en andere distributies gebaseerd op Glibc 2.28+, waaronder Debian 10 en Ubuntu 20.04, evenals voor macOS 10.15+. Vanwege problemen met de ontwikkeling van de V8-engine is de creatie van 32-bits builds voor Windows tijdelijk stopgezet.
  • Er is experimentele functionaliteit geleverd voor het bouwen van een uitvoerbaar bestand van Node.js met door de gebruiker geselecteerde componenten die bij het opstarten worden geïnitialiseerd. Om de startcomponenten te bepalen, is de configuratiescriptoptie «—node-snapshot-main» toegevoegd, bijvoorbeeld «./configure —node-snapshot-main=marked.js; name node».

Het Node.js-platform kan worden gebruikt voor zowel serverondersteuning van webapplicaties als voor het creëren van reguliere client- en servernetwerkprogramma's. Voor de uitbreiding van de functionaliteit van toepassingen voor Node.js is er een grote collectie modules beschikbaar, waar je modules kunt vinden met implementatie van servers en clients voor HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, modules voor integratie met verschillende webframeworks, WebSocket en Ajax handlers, connectoren naar databases (MySQL, PostgreSQL, SQLite, MongoDB), template-engines, CSS-engines, implementaties van cryptografie en autorisatiesystemen (OAuth), XML-parsers.

Om een groot aantal parallelle verzoeken te verwerken, maakt Node.js gebruik van een asynchroon model voor het uitvoeren van code, gebaseerd op het verwerken van gebeurtenissen in een niet-blokkerende modus en het definiëren van callback-handlers. Methoden zoals epoll, kqueue, /dev/poll en select worden ondersteund voor het multiplexen van verbindingen. De libuv bibliotheek, die een bovenlaag vormt boven libev in Unix-systemen en boven IOCP in Windows, wordt gebruikt voor het multiplexen van verbindingen. Voor het creëren van een thread pool wordt de libeio bibliotheek ingezet en voor het uitvoeren van DNS-verzoeken in niet-blokkerende modus is c-ares geïntegreerd. Alle systeemaanroepen die blokkeren, worden uitgevoerd binnen de thread pool en geven vervolgens, net als signaalhandlers, het resultaat van hun werk terug via een onge benoemde pijp. De uitvoering van JavaScript-code wordt mogelijk gemaakt door het gebruik van de door Google ontwikkelde V8-engine (bovendien ontwikkelt Microsoft een variant van Node.js met de Chakra-Core engine).

Node.js is in essence similar to frameworks like Perl AnyEvent, Ruby Event Machine, Python Twisted, and the event implementation in Tcl, but the event loop in Node.js is hidden from the developer and resembles event handling in a web application running in a browser. When writing applications for Node.js, it's important to consider the specifics of event-driven programming. For instance, instead of executing 'var result = db.query("select.." );' and waiting for it to finish before processing the results, Node.js employs an asynchronous execution principle where the code transforms to 'db.query("select..", function (result) {result processing});', allowing control to pass immediately to the subsequent code, while the result of the query is processed as data comes in.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster