Bola vydaná JavaScript platforma Deno 1.16, určená na samostatné spúšťanie (bez použitia prehliadača) aplikácií napísaných v jazykoch JavaScript a TypeScript. Projekt sa vyvíja autorom Node.js Ryanom Dahlem. Kód platformy je napísaný v programovacom jazyku Rust a distribuuje sa pod licenciou MIT. Hotové zostavy sú pripravené pre Linux, Windows a macOS.
Projekt je podobný platforme Node.js a, podobne ako ona, používa JavaScript engine V8, avšak, podľa slov autora Node.js, opravuje niekoľko architektonických chýb svojho predchodcu a odlišuje sa od neho nasledujúcimi nuansami:
- Použitie jazyka Rust ako hlavného jazyka, čo podľa názorov vývojárov znižuje riziko vzniku zraniteľností spojených s nízkoúrovňovou prácou s pamäťou (preplnenie zásobníka, use-after-free atď.);
- Deno nepoužíva správcu balíkov npm a package.json, ponúkajú používateľovi inštaláciu modulov prostredníctvom uvádzaného URL alebo cesty k modulu na inštaláciu. Napriek tomu projekt ponúka niekoľko utilít na zjednodušenie práce so zdieľanými modulmi;
- Aplikácie sa spúšťajú oddelene v pieskovisku a nemajú prístup k sieti, premenným prostredia a súborovému systému bez výslovne udelených oprávnení;
- V architektúre je zakotvená možnosť vytvárania univerzálnych webových aplikácií, ktoré dokážu fungovať ako v systéme Deno, tak aj v bežnom prehliadači;
- Použitie „ES Modules“ a absencia podpory require();
- Akékoľvek nezpracované chyby programátora vo webovej aplikácii vedú k ich nútenému ukončeniu;
- Podpora TypeScript okrem JavaScriptu;
- Celková veľkosť platformy pripravené na použitie je 84 MB (v zip archíve — 31 MB) vo forme jedného spustiteľného súboru;
- V súprave sa ponúka systém riešenia závislostí a formátovania kódu;
- Sú orientované na vysoko výkonné aplikácie.
Dino spracováva požiadavky v neblokujúcom režime s použitím platformy Tokio, určené na vytváranie vysoko výkonných aplikácií založených na udalostiach (event-driven) architektúry. Zaujímavé je, že zabudovaný HTTP server Deno je implementovaný na TypeScript nad natívnymi TCP socketmi, čo pozitívne ovplyvňuje výkon sieťových operácií.
V novej verzii sa zaznamenáva:
- Optimalizácia výkonu (4 opravy);
- Oprava viac ako 15 chýb, vrátane podpory HTTP/2 pre TLS klienta, podpora dodatočných kódovacích značiek v kódovacej subsystéme a ďalšie.
- Viac ako dve desiatky noviniek, medzi ktorými stojí za zmienku stabilizácia predtým testovaných subsystémov Deno.startTls a Deno.TestDefinition.permissions, aktualizácia JS enginu V8 na verziu 9.7 a podpora transformácií React 17 JSX.
Zdroj: opennet.ru
