Node.js 16.0 er blevet udgivet, en platform til udførelse af netværksapplikationer i JavaScript. Node.js 16.0 er klassificeret som en version med langsigtet support, men denne status vil først blive tildelt i oktober efter stabilisering. Supporten for Node.js 16.0 vil vare indtil april 2023. Supporten af den tidligere LTS-version Node.js 14.0 fortsætter indtil april 2023, mens den før det, LTS-version 12.0, understøttes indtil april 2022. Støtten til LTS-version 10.0 ophører om 10 dage.
Hovedforbedringer:
- V8-motoren er opdateret til version 9.0 (i Node.js 15 blev version 8.6 anvendt), hvilket gør det muligt at implementere funktioner i Node.js 16 som egenskaben "indices" for regulære udtryk (inkluderer et array med start- og slutpositioner for grupper af matchinger), metoden Atomics.waitAsync (den asynkrone version af Atomics.wait), og understøttelse af brug af nøgleordet await på det øverste niveau i moduler. Funktionskald er blevet hurtigere, når antallet af overførte argumenter ikke matcher funktionens specifikationer.
- API Timers Promises er blevet stabiliseret, hvilket giver et alternativt sæt funktioner til arbejdet med timere, der returnerer Promise-objekter, hvilket gør det unødvendigt at bruge util.promisify(). import { setTimeout } from 'timers/promises'; async function run() { await setTimeout(5000); console.log('Hello, World!'); } run();
- En eksperimentel implementering af API Web Crypto er tilføjet, designet til at udføre grundlæggende kryptografiske operationer på siden af webapplikationer, såsom håndtering af kryptografiske hashes, generering og verifikation af digitale signaturer, kodning og dekodning af data ved hjælp af forskellige krypteringsmetoder, samt generering af kryptografisk sikre tilfældige tal. API'et inkluderer også funktioner til nøglegenerering og -håndtering.
- N-API (API til udvikling af udvidelser) er opdateret til version 8.
- Overgangen til den nye version af pakkeadministratoren NPM 7.10 er gennemført.
- Implementeringen af klassen AbortController er blevet stabiliseret, som er baseret på Web API AbortController og gør det muligt at annullere signaler i udvalgte API'er baseret på Promise.
- Understøttelsen af tredje version af Source Map-formatet, der bruges til at matche genererede, behandlede eller pakkede moduler med den originale kildekode, er blevet stabiliseret.
- For at sikre kompatibilitet med forældede Web API'er er metoderne buffer.atob(data) og buffer.btoa(data) blevet tilføjet.
- Produktionen af samlinger til de nye Apple-enheder med ARM M1-chip er begyndt.
- På Linux-platformen er kravene til compiler-versionen hævet til GCC 8.3.
Vi minder om, at Node.js-platformen kan bruges både til serverhåndtering af webapplikationer samt til udvikling af almindelige klient- og serverbaserede netværksprogrammer. For at udvide applikationernes funktionalitet er der udarbejdet et stort bibliotek af moduler, hvor man kan finde moduler med implementering. 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.
Det skal nævnes, at Deno, grundlagt af skaberen af Node.js for at udvikle den nye generation af Deno-platformen, har modtaget 4,9 millioner dollars i investering. Deno minder om Node.js i sin funktion, men forsøger at rette de konceptuelle fejl begået i Node.js-arkitekturen og give brugerne et mere sikkert miljø. Det bemærkes, at virksomhedens løsninger vil være bygget på fuldt åbne produkter, og modellen Open Core med separate betalte funktioner regnes som uacceptabel for Deno-platformen.
Kilde: opennet.ru
