Byla vydaná platforma Node.js 23.0 s počáteční podporou jazyka TypeScript

Vydání Node.js 23.0.0, platformy pro spouštění síťových aplikací v jazyce JavaScript. Node.js 23.0 je zařazena mezi mezivrstvy, které budou podporovány po dobu 7 měsíců (do června 2025). V následujících dnech bude dokončena stabilizace větve Node.js 22, která 29. října získá status LTS a bude podporována do dubna 2027. Podpora minulých LTS větví Node.js 20.x a 18.x potrvá do dubna 2026 a 2025.

Hlavní vylepšení:

  • Byla přidána experimentální podpora jazyka TypeScript, která umožňuje explicitní definici typů. Podpora se aktivuje pomocí voleb „—experimental-strip-types“ a „—experimental-transform-types“. V případě první volby se práce s TypeScriptem omezuje na čištění specifických definic typů (kontrola typů se neprovádí, kód se pouze převádí do podoby JavaScriptu bez typů). Druhá volba provádí transformaci určitých elementů syntaxe TypeScriptu, jako jsou výčty (enum) a jmenné prostory (namespace), do JavaScriptového kódu.
  • Byla ve výchozím nastavení povolena možnost použití volání „require()“ pro načítání JavaScriptových modulů ESM (ECMAScript Modules) v synchronním režimu. ESM moduly se používají v prohlížečích a nahrazují moduly CommonJS specifické pro Node.js. Pro načítání ESM modulu v Node.js pomocí „require()“ musí být modul prováděn v synchronním režimu (bez await na vrchní úrovni).
  • Bylo zajištěno automatické rozpoznávání ESM modulů v souborech bez přípony nebo s příponou „.js“. Dříve byly takové soubory považovány za moduly CommonJS, pokud nebyl v souboru package.json umístěném ve stejné složce explicitně uveden jejich typ („type“: „module“). V nové verzi se nejprve pokusí o načtení těchto souborů jako modul CommonJS, a pokud to selže, pak jako modul ESM.
  • Byla přidána experimentální implementace kompatibilní s prohlížeči API Web Storage, určené k trvalému (třída localStorage) nebo dočasnému (třída sessionStorage) ukládání dat ve formátu klíč/hodnota. Pro povolení podpory Web Storage je potřeba spustit s příznakem „—experimental-webstorage“ a uvést cestu k souboru s úložištěm pomocí příznaku „—localstorage-file“.
  • Byl přidán experimentální API SQLite pro práci s databázemi pomocí jazyka SQL a úložiště založeného na knihovně SQLite. Kromě ukládání databáze do souboru na disku ji lze umístit také do paměti uvedením místo názvu souboru „:memory:“. Výše zmíněné API Web Storage je také implementováno nad SQLite, což vedlo k přidání SQLite mezi závislosti pro Node.js.
  • Byl oznámen stabilní příkaz „node —run“, určený k spuštění skriptů definovaných v souboru package.json.
  • Byla implementována volitelná podpora pro cachování zkompilovaného kódu na disku, což významně urychluje spouštění modulů. Aktivace cachování se provádí prostřednictvím proměnné prostředí NODE_COMPILE_CACHE. Tato možnost se svým účelem podobá balíčku v8-compile-cache, ale liší se vyšším výkonem a podporou modulů ESM.
  • Byla optimalizována struktura Buffer, což umožnilo výrazně zvýšit výkon metod Buffer.copy() a Buffer.write().
  • Byl zvýšen výkon modulu node:fs, ve kterém bylo také sníženo množství volání kódu ve C++ během provozu.
  • Engine V8 byl aktualizován na verzi 12.9, která se používá v Chromium 129.
  • Byla odstraněna podpora 32bitových systémů na Windows.
  • Vzhledem k zavedení funkcí definovaných ve standardu C++20 do Node.js a enginu V8 se zvýšily požadavky na verzi kompilátoru GCC. Pro sestavení Node.js je nyní vyžadována minimálně verze GCC 12.

Platforma Node.js může být využita jak pro serverové zajištění chodu webových aplikací, tak pro vytváření obyčejných klientských a serverových síťových programů. Pro rozšíření funkcionality aplikací pro Node.js je k dispozici rozsáhlá sbírka modulů, ve které lze nalézt moduly s realizacemi servery a klientů HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, moduly pro integraci s různými webovými frameworky, zpracovatele WebSocket a Ajax, konektory k databázím (MySQL, PostgreSQL, SQLite, MongoDB), šablonovací enginy, CSS frameworky, implementace kryptografických algoritmů a systémů autorizace (OAuth), XML parsery.

Aby bylo možné zpracovávat velké množství paralelních požadavků, Node.js využívá asynchronní model spouštění kódu, který je založen na zpracování událostí v neblokujícím režimu a definování callback handlerů. Jako metody multiplexování spojení jsou podporovány techniky jako epoll, kqueue, /dev/poll a select. Pro multiplexování spojení se používá knihovna libuv, která je nadstavbou nad libev v systémech Unix a nad IOCP ve Windows. Pro vytvoření vlákna (thread pool) je využívána knihovna libeio a pro provádění DNS dotazů v neblokujícím režimu je integrován c-ares. Všechny systémové volání, která vyvolávají blokování, se provádějí uvnitř vlákna a pak, stejně jako zpracovatelé signálů, předávají výsledek své práce zpět prostřednictvím anonymního kanálu (pipe).

Provádění JavaScriptového kódu je zajištěno prostřednictvím využití motoru V8 vyvinutého společností Google (dodatečně Microsoft vyvíjí variantu Node.js s motorem Chakra-Core). V podstatě je Node.js podobný rámcům Perl AnyEvent, Ruby Event Machine, Python Twisted a implementaci událostí v Tcl, ale cyklus zpracování událostí (event loop) v Node.js je skrytý před vývojářem a připomíná zpracování událostí ve webové aplikaci běžící v prohlížeči.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster