Autor Node.js představil zabezpečenou JavaScriptovou platformu Deno 1.0

Po dvou letech vývoje byl představen první významné vydání Deno 1.0, platformy pro izolované spouštění aplikací v jazycích JavaScript a TypeScript, kterou lze použít k vytváření serverových handlerů. Platformu vyvíjí Ryan Dahl (Ryan Dahl), tvůrce Node.js. Stejně jako v Node.js je v Deno použit JavaScriptový engine V8, který je také používán v prohlížečích na bázi Chromium. Deno však není větví Node.js, ale představuje nový projekt vytvořený od základu. Kód projektu distribuováno je licencován pod MIT. Sestavení jsou připraveny pro Linux, Windows a macOS.

Významné číslo verze je spojeno se stabilizací API v jmenném prostoru Deno, které má na starosti interakci aplikací s operačním systémem. Programové rozhraní, které zatím není stabilizováno, je ve výchozím nastavení skryto a je dostupné pouze při spuštění v režimu "--unstable". Jak se budou objevovat nové verze, budou podobná API postupně převáděna do kategorie stabilních. API v globálním jmenném prostoru, včetně takových běžných funkcí jako setTimeout() a fetch(), je, pokud je to možné, přizpůsobeno API běžných webových prohlížečů a vyvíjí se v souladu s webovými standardy pro prohlížeče. Poskytovaná Rust API, která se přímo používají v kódu platformy, stejně jako rozhraní pro vývoj pluginů pro Deno runtime, zatím nejsou stabilizována a stále se vyvíjejí.

Klíčovými motivy pro vytvoření nové JavaScriptové platformy bylo odstranit konceptuální chyby, které byly dopustěny v architektuře Node.js, a poskytnout uživatelům bezpečnější prostředí. Pro zvýšení bezpečnosti je obal kolem engine V8 napsán v jazyce Rust, který umožňuje vyhnout se mnoha zranitelnostem způsobeným nízkoúrovňovou prací s pamětí, jako je přístup do oblasti paměti po jejím uvolnění, dereferencování nullových ukazatelů a překročení mezí bufferu. Pro zpracování požadavků v neblokujícím režimu se používá platformaTokio

Hlavní vlastnosti , také napsaná v jazyce Rust. Tokio umožňuje vytváření vysoce výkonných aplikací založených na architektuře orientované na události (Event-driven), které podporují vícerozpracování a asynchronní zpracování síťových požadavků.

  • Zaměření na bezpečnost v konfiguraci podle výchozího nastavení. Přístupy k souborům, síťové schopnosti a přístup k proměnným prostředí jsou ve výchozím nastavení blokovány a vyžadují explicitní povolení. Aplikace se ve výchozím nastavení spouštějí v izolovaných sandboxových prostředích a nemohou přistupovat k systémovým schopnostem bez udělení jasných oprávnění;
  • Vestavěná podpora pro jazyk TypeScript kromě JavaScriptu. Pro kontrolu typů a generaci JavaScriptu je použit standardní kompilátor TypeScript, což vede k poklesu výkonu ve srovnání s analýzou JavaScriptu v V8. V budoucnu se plánuje příprava vlastní implementace systému kontroly typů TypeScript, která výrazně zvyší výkon zpracování TypeScript;
  • Runtime je dodáván ve formě jednoho samostatného spustitelného souboru („deno“). Pro spuštění aplikací pomocí Deno stačí stáhnout pro svou platformu jeden spustitelný soubor o velikosti přibližně 20 MB, který nemá žádné externí závislosti a nevyžaduje žádnou zvláštní instalaci do systému. Přitom deno není monolitní aplikace, ale představuje kolekci crate balíčků na Rust (deno_core, rusty_v8), které mohou být používány samostatně;
  • Při spuštění programu a také pro načítání modulů lze použít adresaci přes URL. Například pro spuštění programu welcome.js lze použít příkaz „deno https://deno.land/std/examples/welcome.js“. Kód z externích zdrojů se načítá a ukládá do mezipaměti na místní systém, ale nikdy se automaticky neaktualizuje (pro aktualizaci je nutné explicitně spustit aplikaci s přepínačem „—reload“);
  • Efektivní zpracování síťových požadavků přes HTTP, platforma je navržena pro vytváření vysoce výkonných síťových aplikací;
  • Možnost vytváření univerzálních webových aplikací, které mohou běžet jak v Deno, tak v běžném webovém prohlížeči;
  • Přítomnost standardní sady modulů, jejichž použití nevyžaduje vazbu na externí závislosti. Moduly ze standardní sbírky prošly dodatečným auditem a kontrolou kompatibility;
  • Kromě runtime platforma Deno také funguje jako správce balíčků a umožňuje v rámci kódu odkazovat na moduly pomocí URL. Například pro načtení modulu můžete v kódu uvést „import * as log from „https://deno.land/std/log/mod.ts“. Soubory načtené z externích serverů pomocí URL jsou ukládány do mezipaměti. Verze modulů jsou určovány uvedením čísel verzí v URL, například „https://unpkg.com/liltest@0.0.5/dist/liltest.js“;
  • Součástí je také systém pro inspekci závislostí (příkaz „deno info“) a nástroj pro formátování kódu (deno fmt);
  • Všechny skripty aplikace mohou být spojeny do jednoho JavaScriptového souboru.

Rozdíly oproti Node.js:

  • Deno nepoužívá správce balíčků npm
    a není vázáno na repozitáře, adresace modulů se provádí prostřednictvím URL nebo dle souborové cesty, přičemž moduly mohou být umístěny na jakémkoli webu;
  • V Deno se nepoužívá „package.json“ pro určení modulů;
  • Rozdílné API, všechny asynchronní akce v Deno vracejí promise;
  • Deno vyžaduje explicitní určení všech potřebných oprávnění pro soubory, síť a proměnné prostředí;
  • Veškeré chyby, které nemají obsluhovače, vedou k ukončení běhu aplikace;
  • V Deno se používá systém modulů ECMAScript a nepodporuje require();
  • Vestavěný HTTP server Deno je napsán v TypeScriptu a funguje nad nativními TCP sockety, zatímco HTTP server Node.js je napsán v C a poskytuje vazby pro JavaScript. Vývojáři Deno se zaměřili na optimalizaci celého TCP socketového vrstvy a poskytování obecnějšího rozhraní. HTTP server Deno zajišťuje nižší propustnost, ale zaručuje předvídatelně nízké latence. Například v testu jednoduchá aplikace na bázi Deno HTTP serveru dokázala zpracovat 25 tisíc požadavků za sekundu s maximální latencí 1,3 milisekundy. V Node.js obdobná aplikace zpracovala 34 tisíc požadavků za sekundu, ale latence se pohybovaly od 2 do 300 milisekund.
  • Deno není kompatibilní s balíčky pro Node.js (NPM), ale vyvíjí se odděleně vrstva pro zajištění kompatibility se standardní knihovnou Node.js, v průběhu jejího vývoje se v Deno budou moci spouštět stále více aplikací napsaných pro Node.js.
  • 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