vydání projektu , která nabízí platformu podobnou Node.js pro izolované spouštění aplikací napsaných v JavaScriptu a TypeScriptu, která může být použita pro běh aplikací bez závislosti na prohlížeči, například pro vytváření serverových zpracovatelů. Deno využívá JavaScriptový engine , který se rovněž používá v Node.js a prohlížečích na bázi projektu Chromium. Kód projektu je licencován pod MIT. Projekt rozvíjí Ryan Dahl (), tvůrce JavaScriptové platformy Node.js.
Jedním z hlavních cílů vytvoření nového runtime pro JavaScript je poskytnout bezpečnější prostředí. Pro zvýšení bezpečnosti je obal kolem motoru V8 napsán v jazyce Rust, což umožňuje vyhnout se mnoha zranitelnostem, které vznikají kvůli nízkoúrovňové práci s pamětí, jako je přístup k paměti po jejím uvolnění, dereference nulových ukazatelů a přetečení bufferu. Pro zpracování dotazů v neblokujícím režimu se používá platforma Tokio
Hlavní , 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ů.
- Orientace na bezpečnost ve výchozí konfiguraci. Přístupy k souborům, síťové možnosti a přístup k proměnným prostředí jsou ve výchozím nastavení blokovány a vyžadují explicitní povolení;
- Vestavěná podpora jazyka TypeScript kromě JavaScriptu;
- Runtime je dodáván ve formě jednoho samostatného spustitelného souboru („deno“). Pro spuštění aplikací pomocí Deno stačí pro svoji platformu jeden spustitelný soubor o velikosti přibližně 10 MB, který nemá externí závislosti a nevyžaduje žádnou zvláštní instalaci do systému;
- 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;
- 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 integrovaný systém inspekce závislostí (příkaz „deno info“) a nástroj pro formátování kódu (deno fmt).
- Pro vývojáře aplikací sada standardních modulů, které prošly dodatečným auditem a kontrolou kompatibility;
- 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 není podporován require().
Zdroj: opennet.ru
