K dispozícii je platforma JavaScript na strane servera Node.js 20.0

Prebehlo vydanie Node.js 20.0, platformy na spúšťanie sieťových aplikácií v JavaScripte. Node.js 20.0 bol priradený k vetve long support, ale tento status bude priradený až v októbri, po stabilizácii. Node.js 20.x bude podporovaný do 30. apríla 2026. Údržba predchádzajúcej vetvy Node.js 18.x LTS potrvá do apríla 2025 a predchádzajúcej vetvy 16.x LTS do septembra 2023. Pobočka 14.x LTS bude zachovaná 30. apríla a dočasná pobočka Node.js 19.x 1. júna.

Hlavné vylepšenia:

  • Engine V8 bol aktualizovaný na verziu 11.3, ktorá sa používa v Chromium 113. Zo zmien oproti vetve Node.js 19, ktorá používala engine Chromium 107, funkcie String.prototype.isWellFormed a toWellFormed, Array.prototype a TypedArray.prototype metódy na prácu s kópiou pri zmene objektov Array a TypedArray, príznak "v" v RegExp, podpora pre zmenu veľkosti ArrayBuffer a zväčšenie veľkosti SharedArrayBuffer, tail-call vo WebAssembly.
  • Navrhuje sa experimentálny mechanizmus modelu povolení, ktorý vám umožňuje obmedziť prístup k určitým zdrojom počas vykonávania. Podpora modelu povolení je povolená zadaním príznaku „--experimental-permission“ pri spustení. V počiatočnej implementácii boli navrhnuté možnosti na obmedzenie prístupu na zápis (--allow-fs-write) a čítanie (--allow-fs-read) do určitých častí FS, podriadených procesov (--allow-child-process) , doplnky (--no-addons ) a vlákna (--allow-worker). Ak chcete napríklad povoliť zapisovanie do adresára /tmp a čítanie súboru /home/index.js, môžete zadať: node --experimental-permission --allow-fs-write=/tmp/ --allow-fs-read =/home/index.js index .js

    Na kontrolu prístupu sa odporúča použiť metódu process.permission.has(), napríklad "process.permission.has('fs.write',"/tmp/test").

  • Obslužné programy pre externé moduly ECMAScript (ESM) načítané cez možnosť „--experimental-loader“ sa teraz vykonávajú v samostatnom vlákne, izolovanom od hlavného vlákna, čo eliminuje prienik kódu aplikácie a načítaných modulov ESM. Podobne ako v prehliadačoch sa metóda import.meta.resolve() teraz vykonáva synchrónne, keď sa volá z aplikácie. V jednej z ďalších vetiev Node.js sa plánuje presun podpory načítania ESM do kategórie stabilných funkcií.
  • Modul node:test (test_runner), určený na vytváranie a spúšťanie testov JavaScript, ktoré vracajú výsledky vo formáte TAP (Test Anything Protocol), bol presunutý do stabilnej verzie.
  • Bol vytvorený samostatný výkonnostný tím, ktorý v rámci prípravy na novú pobočku pracoval na zrýchlení rôznych runtime komponentov, vrátane URL parsing, fetch() a EventTarget. Napríklad réžia inicializácie EventTarget sa znížila na polovicu, výrazne sa zlepšil výkon metódy URL.canParse() a zlepšila sa účinnosť časovačov. Okrem toho je v kompozícii zahrnuté vydanie vysokovýkonného analyzátora adries URL - Ada 2.0, napísaného v C ++.
  • Pokračoval vývoj experimentálnej funkcie na poskytovanie aplikácií vo forme jedného spustiteľného súboru (SEA, Single Executable Applications). Vytvorenie spustiteľného súboru si teraz vyžaduje nahradenie objektu blob vygenerovaného z konfiguračného súboru JSON (namiesto nahradenia súboru JavaScript).
  • Vylepšená kompatibilita Web Crypto API s implementáciami z iných projektov.
  • Pridaná oficiálna podpora pre Windows na systémoch ARM64.
  • Pokračujúca podpora pre rozšírenia WASI (WebAssembly System Interface) na vytváranie samostatných aplikácií WebAssembly. Odstránila sa potreba špecifikovať špeciálny príznak príkazového riadka na povolenie podpory WASI.

Platformu Node.js je možné použiť ako na serverovú údržbu webových aplikácií, tak aj na vytváranie bežných klientskych a serverových sieťových programov. Pre rozšírenie funkcionality aplikácií pre Node.js je pripravená veľká kolekcia modulov, v ktorých nájdete moduly s implementáciou HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 serverov a klientov, moduly pre integráciu s rôznymi webovými frameworkami, obslužnými nástrojmi WebSocket a Ajax, konektormi DBMS (MySQL, PostgreSQL, SQLite, MongoDB), nástrojmi na vytváranie šablón, nástrojmi CSS, implementáciami kryptografických algoritmov a autorizačných systémov (OAuth), analyzátormi XML.

Na zabezpečenie spracovania veľkého počtu paralelných požiadaviek používa Node.js asynchrónny model vykonávania kódu založený na neblokujúcom spracovaní udalostí a definícii obsluhy spätného volania. Podporované metódy pre multiplexné pripojenia sú epoll, kqueue, /dev/poll a select. Pre multiplexovanie pripojení sa používa knižnica libuv, ktorá je doplnkom pre libev na systémoch Unix a IOCP na Windows. Knižnica libeio sa používa na vytvorenie oblasti vlákien a c-ares je integrovaný na vykonávanie DNS dotazov v neblokujúcom režime. Všetky systémové volania, ktoré spôsobujú blokovanie, sa vykonávajú vo vnútri oblasti vlákien a potom, ako obslužné programy signálov, prenášajú výsledok svojej práce späť cez nepomenovanú rúrku (pipe). Spustenie kódu JavaScript je zabezpečené pomocou motora V8 vyvinutého spoločnosťou Google (okrem toho Microsoft vyvíja verziu Node.js s motorom Chakra-Core).

Vo svojom jadre je Node.js podobný rámcom Perl AnyEvent, Ruby Event Machine, Python Twisted a implementácii udalostí Tcl, ale slučka udalostí v Node.js je pred vývojárom skrytá a pripomína spracovanie udalostí vo webovej aplikácii, ktorá je spustená. v prehliadači. Pri písaní aplikácií pre node.js musíte vziať do úvahy špecifiká programovania riadeného udalosťami, napríklad namiesto toho, aby ste robili "var result = db.query("select..");" s čakaním na dokončenie práce a následným spracovaním výsledkov využíva Node.js princíp asynchrónneho vykonávania, t.j. kód sa transformuje na "db.query("select..", funkcia (výsledok) {spracovanie výsledku});", v ktorej riadenie okamžite prejde na ďalší kód a výsledok dotazu sa spracuje po príchode údajov.

Zdroj: opennet.ru

Pridať komentár