Den serverbaserede JavaScript-platform Node.js 20.0 er tilgængelig

Node.js 20.0 er blevet udgivet, en platform til kørsel af netværksapplikationer skrevet i JavaScript. Node.js 20.0 er klassificeret som en version med langvarig støtte, men denne status vil først blive tildelt i oktober efter stabilisering. Støtten til Node.js 20.x vil blive leveret indtil 30. april 2026. Vedligeholdelsen af den tidligere LTS-version Node.js 18.x vil fortsætte indtil april 2025, og den forrige LTS-version 16.x indtil september 2023. Vedligeholdelsen af LTS-versionen 14.x vil blive stoppet den 30. april, og den mellemliggende version Node.js 19.x den 1. juni.

Hovedforbedringer:

  • V8-motoren er opdateret til version 11.3, som anvendes i Chromium 113. I forhold til Node.js 19, der brugte Chromium 107, bemærkes funktionerne String.prototype.isWellFormed og toWellFormed, metoder til Array.prototype og TypedArray.prototype til arbejde med kopier ved ændringer af Array og TypedArray-objekter, flaget "v" i RegExp, støtte til ændring af størrelse på ArrayBuffer og forøgelse af SharedArrayBuffer, samt tail-call i WebAssembly.
  • Предложен экспериментальный механизм Permission Model, позволяющий ограничить доступ к определённым ресурсам в процессе исполнения. Поддержка Permission Model включается через указание при запуске флага «—experimental-permission». В начальной реализации предложены опции для ограничения доступа на запись (—allow-fs-write) и чтение (—allow-fs-read) к определённым частям ФС, дочерним процессам (—allow-child-process), дополнениям (—no-addons) и потокам (—allow-worker). Например, чтобы разрешить запись в каталог /tmp и чтение файла /home/index.js можно указать: node —experimental-permission —allow-fs-write=/tmp/ —allow-fs-read=/home/index.js index.js

    For at kontrollere adgang anbefales det at bruge metoden process.permission.has(), for eksempel "process.permission.has('fs.write', '/tmp/test')".

  • Behandlere for eksterne ECMAScript-moduler (ESM), der indlæses via indstillingen "--experimental-loader", udføres nu i en separat tråd, adskilt fra hovedtråden, hvilket eliminerer overlapning af applikationskode og indlæste ESM-moduler. I lighed med browsere udføres metoden import.meta.resolve() nu i synkron tilstand, når den kaldes fra applikationen. I en af de kommende Node.js-versioner planlægger man at overføre understøttelsen af ESM-indlæsning til kategorien stabile funktioner.
  • Node:test-modulet (test_runner), der bruges til at oprette og køre tests i JavaScript, som returnerer resultater i TAP (Test Anything Protocol) format, er blevet overført til kategorien stabile.
  • Der er oprettet et separat udviklerteam, der er ansvarligt for ydelsesoptimering, som i forberedelsen af den nye version har arbejdet på at accelerere forskellige runtime-komponenter, herunder parsing af URL, fetch() og EventTarget. For eksempel er omkostningerne ved initialisering af EventTarget blevet halveret, ydeevnen af metoden URL.canParse() er blevet betydeligt forbedret, og effektiviteten af timere er forbedret. Derudover er der tilføjet en højtydende URL-parser — Ada 2.0, skrevet i C++.
  • Udviklingen af den eksperimentelle mulighed for levering af applikationer i form af en enkelt eksekverbar fil (SEA, Single Executable Applications) er blevet fortsat. Oprettelsen af den eksekverbare fil kræver nu indtastning af en blob, der er dannet på grundlag af en konfigurationsfil i JSON-format (i stedet for indtastning af en JavaScript-fil).
  • Kompatibiliteten af Web Crypto API er blevet forbedret med implementeringer fra andre projekter.
  • Der er tilføjet officiel support til Windows på ARM64-systemer.
  • Implementeringen af support til WASI-udvidelser (WebAssembly System Interface) for oprettelse af isolerede WebAssembly-applikationer er blevet fortsat. Kravet om at angive et særligt kommandolinjeflag for at aktivere WASI-support er blevet fjernet.

Node.js-platformen kan bruges til både server-side drift af webapplikationer og til at skabe almindelige klient- og serverbaserede netværksprogrammer. Der er forberedt en stor samling af moduler til at udvide funktionaliteten af applikationer til Node.js, hvor man kan finde moduler med implementeringer servere og HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 klienter, moduler til integration med forskellige web-rammer, WebSocket- og Ajax-håndterere, forbindelser til DBMS (MySQL, PostgreSQL, SQLite, MongoDB), templating-motorer, CSS-motorer, implementeringer af kryptografi-algoritmer og autorisationssystemer (OAuth), XML-parsere.

For the handling of a large number of parallel requests, Node.js utilizes an asynchronous code execution model based on event-driven, non-blocking I/O and the definition of callback handlers. It supports multiplexing methods such as epoll, kqueue, /dev/poll, and select. The libuv library, which acts as a wrapper over libev in Unix systems and IOCP in Windows, is used for connection multiplexing. A thread pool is created using the libeio library, and for performing non-blocking DNS queries, c-ares is integrated. All blocking system calls are executed within the thread pool and then, similar to signal handlers, relay their results back via an unnamed pipe. JavaScript code execution is facilitated through the V8 engine developed by Google (Microsoft also develops a Node.js variant with the Chakra-Core engine).

In essence, Node.js is 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 abstracted from the developer, resembling the event handling in a web application running in a browser. When developing applications for Node.js, one must consider the aspects of event-driven programming; for instance, instead of executing "var result = db.query('select..');" while waiting for the operation to complete and subsequently handling results, Node.js employs asynchronous execution principles, meaning the code transforms to "db.query('select..', function (result) {result handling});" whereby control immediately passes to subsequent code while the result will be processed as data arrives.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster