Node.js 23.0 is gepubliceerd met initiële ondersteuning voor de programmeertaal TypeScript.

Node.js 23.0.0 is uitgebracht, een platform voor het uitvoeren van netwerktoepassingen in de programmeertaal JavaScript. Node.js 23.0 is geclassificeerd als een tussentijdse tak, die gedurende 7 maanden (tot juni 2025) wordt onderhouden. In de komende dagen zal de stabilisatie van de Node.js 22-tak worden afgerond, die op 29 oktober de LTS-status (Long Term Support) zal ontvangen en tot april 2027 wordt ondersteund. De ondersteuning voor de eerdere LTS-takken Node.js 20.x en 18.x zal duren tot april 2026 en 2025 respectievelijk.

Hoofdverbeteringen:

  • Experimentele ondersteuning voor de programmeertaal TypeScript is toegevoegd, die expliciete type-definities toelaat. Ondersteuning kan worden ingeschakeld met de opties ‘—experimental-strip-types’ en ‘—experimental-transform-types’. Bij de eerste optie wordt de interactie met TypeScript beperkt tot het verwijderen van type-definities die specifiek zijn voor deze taal (typecontroles worden niet uitgevoerd, de code wordt gewoon omgezet naar JavaScript zonder types). De tweede optie maakt de transformatie van bepaalde TypeScript-syntaxis-elementen naar JavaScript-code mogelijk, zoals enumeraties (enum) en namespaces.
  • Standaard is het mogelijk om de aanroep ‘require()’ te gebruiken voor het synchronisch laden van ESM (ECMAScript Modules) JavaScript-modules. ESM-modules worden in browsers gebruikt en vervangen de CommonJS-modules die specifiek zijn voor Node.js. Voor het laden via ‘require()’ moet de ESM-module in Node.js synchronisch worden uitgevoerd (zonder await op het hoogste niveau).
  • Automatische detectie van ESM-modules in bestanden zonder extensie of met de extensie ‘.js’ is mogelijk gemaakt. Voorheen werden dergelijke bestanden geïnterpreteerd als CommonJS-modules, tenzij hun type expliciet werd aangegeven in het package.json-bestand in dezelfde directory (‘type’: ‘module’). In de nieuwe versie wordt voor bestanden waarvan het type niet is gedefinieerd in package.json eerst geprobeerd ze als CommonJS-module te laden, en als dat mislukt, als ESM-module.
  • Experimentele implementatie toegevoegd browsercompatibele API Web Storage, bedoeld voor permanente (localStorage) of tijdelijke (sessionStorage) opslag van gegevens in sleutel/waarde-formaat. Om ondersteuning voor Web Storage in te schakelen, moet de applicatie worden gestart met de vlag ‘—experimental-webstorage’ en een pad naar het opslagbestand worden opgegeven via de vlag ‘—localstorage-file’.
  • Een experimentele SQLite API is toegevoegd voor het werken met databases, met behulp van de SQL-querytaal en opslag op basis van de SQLite-bibliotheek. Naast het opslaan van de database in een bestand op de schijf, kan deze ook in het geheugen worden geplaatst door in plaats van een bestandsnaam «:memory:» op te geven. De eerder genoemde Web Storage API is ook bovenop SQLite geïmplementeerd, wat leidde tot de toevoeging van SQLite aan de afhankelijkheden voor Node.js.
  • De stabiele 'node --run' commando is aangekondigd, bedoeld voor het uitvoeren van scripts die zijn gedefinieerd in het package.json bestand.
  • Optionele ondersteuning voor het cachen van gecompileerde code op schijf is geïmplementeerd om de opstarttijd van modules aanzienlijk te versnellen. Het cachen kan worden ingeschakeld via de omgevingsvariabele NODE_COMPILE_CACHE. Deze mogelijkheid lijkt op het v8-compile-cache pakket, maar biedt betere prestaties en ondersteuning voor ESM-modules.
  • De Buffer-object is geoptimaliseerd, waardoor de prestaties van de Buffer.copy() en Buffer.write() methodes aanzienlijk zijn verbeterd.
  • De prestaties van het node:fs module zijn verhoogd, waarbij ook het aantal aanroepen naar C++ code tijdens de uitvoering is verminderd.
  • De V8-engine is geüpdatet naar versie 12.9, die wordt gebruikt in Chromium 129.
  • Ondersteuning voor 32-bits systemen met Windows OS is verwijderd.
  • Als gevolg van de integratie van mogelijkheden in Node.js en de V8-engine, zoals gedefinieerd in de C++20 standaard, zijn de vereisten voor de GCC compiler verhoogd. Om Node.js te bouwen is nu minimaal versie GCC 12 vereist.

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 gelijktijdige verzoeken te verwerken, gebruikt Node.js een asynchroon model voor het uitvoeren van code, gebaseerd op een event-driven benadering in niet-blokkerende modus en het definiëren van callback-handlers. Methoden zoals epoll, kqueue, /dev/poll en select worden ondersteund als manieren om verbindingen te multiplexen. Voor het multiplexen van verbindingen wordt de libuv-bibliotheek gebruikt, die is opgebouwd bovenop libev in Unix-systemen en IOCP in Windows. Voor het creëren van een threadpool wordt de libeio-bibliotheek gebruikt, en voor het uitvoeren van DNS-verzoeken in niet-blokkerende modus is c-ares geïntegreerd. Alle systeemaanroepen die blokkeren, worden binnen de threadpool uitgevoerd en geven, net als signaalhandlers, het resultaat van hun werk terug via een niet-genaamd kanaal (pipe).

De uitvoering van JavaScript-code wordt mogelijk gemaakt door de V8-engine die is 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 de evenementenimplementatie in Tcl, maar de event loop in Node.js is verborgen voor de ontwikkelaar en lijkt op de gebeurtenisverwerking in een webapplicatie die in een browser draait.

Bron: opennet.ru

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