Vydání serverové JavaScript platformy Node.js 14.0

Proběhlo vydání Node.js 14.0, platformy pro provoz síťových aplikací napsaných v jazyce JavaScript. Node.js 14.0 se řadí mezi větve s dlouhodobou podporou, tento status však bude přidělen až v říjnu po stabilizaci. Podpora Node.js 14.0 bude poskytována do dubna 2023. Podpora předchozí LTS větve Node.js 12.0 potrvá do dubna 2022, a předpředchozí LTS větve 10.0 do dubna 2021. Podpora mezilehlé větve 13.x skončí v červnu letošního roku.

Hlavní vylepšení:

  • Byla stabilizována možnost dynamického generování nebo při určitých událostech diagnostických zpráv, které odrážejí události usnadňující diagnostiku problémů jako jsou pády, poklesy výkonu, úniky paměti, vysoké zatížení CPU, neočekávaný výstup chyb atd.
  • Byla přidána experimentální podpora API Async Local Storage s implementací třídy AsyncLocalStorage, která může být použita k vytvoření asynchronního stavu s obslužnými funkcemi založenými na zpětných voláních a promise. AsyncLocalStorage umožňuje uchovávat data po dobu zpracování webového požadavku, připomínající lokální úložiště pro jednotlivé vlákna (Thread-Local Storage) v jiných jazycích.
  • Bylo odstraněno varování o experimentální funkci při načítání modulů ECMAScript 6 připojovaných a exportovaných pomocí výrazů import a export. Samotná implementace modulů ESM zatím zůstává experimentální.
  • Engine V8 byl aktualizován na verzi 8.1 (1, 2, 3), která obsahuje nové optimalizace výkonu a novinky jako nový logický operátor sloučení „??“ (vrací pravou operandu, pokud je levá operanda NULL nebo undefined, a naopak), operátor „?.“ pro jednorázové ověření celého řetězce vlastností nebo volání (například „db?.user?.name?.length“ bez předchozích kontrol), metoda Intl.DisplayName pro získání lokalizovaných názvů atd.
  • Byla provedena revize API Streams, zaměřená na zlepšení konzistence API rozhraní Streams a odstranění rozdílů v chování základních částí Node.js. Například chování http.OutgoingMessage bylo přiblíženo k stream.Writable, a net.Socket k stream.Duplex. Volba autoDestroy je ve výchozím nastavení nastavena na „true“, což znamená volání „_destroy“ po dokončení.
  • Byla přidána experimentální podpora API WASI (WebAssembly System Interface), který poskytuje aplikační rozhraní pro přímou interakci s operačním systémem (POSIX API pro práci se soubory, sokety atd.).
  • Zvýšeny požadavky na minimální verze kompilátorů a platforem: macOS 10.13 (High Sierra), GCC 6, Windows nověji než 7/2008R2.

Připomínáme, že platforma Node.js může být použita jak pro serverové zajištění provozu webových aplikací, tak pro vytváření běžných klientských a serverových síťových programů. Pro rozšíření funkcionality aplikací pro Node.js je připravena velká sbírka modulů, ve které lze najít moduly s realizací serverů 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 DBMS (MySQL, PostgreSQL, SQLite, MongoDB), šablonovací nástroje, CSS engine, implementace kryptologických algoritmů a systémů autorizace (OAuth), XML parserů.

Pro zajištění zpracování velkého počtu paralelních požadavků Node.js využívá asynchronní model spuštění kódu, založený na zpracování událostí v neblokujícím režimu a definování callback zpracovatelů. Jako způsoby multiplexování připojení jsou podporovány metody jako epoll, kqueue, /dev/poll a select. Pro multiplexování připojení se používá knihovna libuv, která je nadstavbou nad libev v systémech Unix a nad IOCP ve Windows. Pro vytváření bazénu vláken (thread pool) je využita knihovna libeio, pro provádění DNS dotazů v neblokujícím režimu je integrován c-ares. Všechny systémové volání, která by mohla blokovat, jsou prováděna uvnitř bazénu vláken a poté, stejně jako zpracovatelé signálů, předávají výsledek své práce zpět přes anonymní kanál (pipe). Vykonávání JavaScript kódu je zajištěno prostřednictvím zapojení engine vyvinutého společností Google V8 (navíc Microsoft vyvíjí variantu Node.js s engine chakra-core).

Ve své podstatě je Node.js podobný frameworkům Perl AnyEvent, Ruby Event Machine, Python Twisted a realizaci Události v Tcl, ale smyčka zpracování událostí (event loop) v Node.js je skryta před vývojářem a připomíná zpracování událostí ve webové aplikaci běžící v prohlížeči. Při psaní aplikací pro Node.js je třeba brát v úvahu specifika událostmi orientovaného programování, například místo provedení „var result = db.query(„select..“);“ s čekáním na dokončení a následným zpracováním výsledků, Node.js používá princip asynchronního provádění, tj. kód je transformován na „db.query(„select..“, function (result) {zpracování výsledku});“, při kterém se řízení okamžitě převede na další kód a výsledek dotazu bude zpracován, jakmile data přijdou.

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