Megjelent a Deno 2.0 platform, amelyet a JavaScript és TypeScript nyelven írt szerveralkalmazások elkülönített futtatására terveztek, a Chromium alapú böngészőkben használt V8 motor segítségével. A Deno projektet Ryan Dahl, a Node.js megalkotója fejleszti, célja egy biztonságosabb környezet nyújtása és a Node.js architektúrájában elkövetett koncepcionális hibák kiküszöbölése. A biztonság növelése érdekében a V8 motor körüli keretrendszer Rust nyelven készült, a nem blokkoló kéréskezelés pedig a Tokio platformot használja. A projekt kódját MIT licenc alatt terjesztik. A build-ek Linux, Windows és macOS rendszerekhez készültek.
Az új ágazat előkészítése során a régi JavaScript infrastruktúrával való kompatibilitásra és a támogatott JavaScript projektek spektrumának bővítésére összpontosítottak, anélkül, hogy a biztonság rovására ment volna. A változások között szerepel:
- Megvalósították a Node.js és npm hátrafelé kompatibilitását, lehetővé téve a módosítatlan Node.js-re készült alkalmazások futtatását. A Node.js támogatása lehetővé teszi a meglévő projekteket fokozatosan átkonvertálni Deno használatára, vagy csatlakoztatni NPM-ből származó függőségeket Deno projektekhez a «npm:» specifikátor megadásával a csomagok deno.json-ból való importálásakor.
- Beépített támogatást kaptak a package.json fájl és a node_modules könyvtár számára, amelyeket a Node.js használ.
- Támogatást nyújtanak a privát NPM tárolók számára, amelyeket a «.npmrc» fájlok határoznak meg.
- Támogatják a népszerű JavaScript keretrendszereket, mint például a Next.js, Astro, Remix, Angular, SvelteKit és QwikCity.
- Bevezették a npm (workspace) munkahelyek és a mono-tárolók (monorepo) támogatását az elkülönített függőségkezeléssel.
- Új csomagkezelő parancsokat vezettek be: «deno install» a függőségek telepítésére, «deno add» csomagok hozzáadására a package.json-ba vagy deno.json-ba, «deno remove» csomagok eltávolítására. Megjegyzik, hogy a «deno install» körülbelül 15%-kal gyorsabb, mint az npm, ha nincsenek csomagok a gyorsítótárban, és 90%-kal gyorsabb, ha a csomag a gyorsítótárban van (támogatja mind a node_modules-t, mind a saját globális gyorsítótárat).
- A szabványos könyvtár stabilizálva lett.
- Hosszú távú támogatási ciklus (LTS) biztosítva van.
- Bemutatták a JSR-t — egy JavaScript és TypeScript könyvtárakat tartalmazó tárolót, amelyeket különböző JavaScript Runtime-okban lehet használni.
- A «deno fmt» csapatban lehetőség nyílt HTML, CSS és YAML formátumokban lévő tartalom formázására.
- A „deno lint” parancshoz hozzáadták a Node.js-specifikus szabályok és javítások támogatását.
- A „deno test” parancsban lehetőség nyílik a node:test segítségével létrehozott tesztek futtatására.
- A „deno task” parancs támogatja a szkriptek futtatását a package.json segítségével.
- A „deno compile” parancsban most már lehetséges a kód digitális aláírással való hitelesítése.
- A „deno serve” parancsban megvalósították a HTTP-szerver műveletek párhuzamosítását több CPU-mag használatával.
- A „deno coverage” parancsban megjelent a jelentések HTML formátumban való mentésének támogatása.
- Teljesítményoptimalizálás történt.

A Deno főbb jellemzői:
- Az alapértelmezett konfiguráció biztonságorientált. A fájlokkal való kapcsolatok, a hálózati lehetőségek és az alapértelmezett környezeti változókhoz való hozzáférés blokkolva van, és kifejezett engedélyezést igényel. Az alapértelmezett alkalmazások izolált sandbox környezetben futnak, és nem férhetnek hozzá a rendszer funkcióihoz kifejezett jogosultságok biztosítása nélkül;
- A JavaScript mellett a TypeScript nyelv beépített támogatása. A típusellenőrzéshez és JavaScript generálásához a natív TypeScript fordítót használják, ami teljesítménycsökkenést eredményez a JavaScript V8-as elemzéséhez képest;
- A runtime egy önálló végrehajtható fájl formájában érkezik („deno”). Az alkalmazások Deno segítségével történő futtatásához elegendő egy végrehajtható fájlt letölteni a saját platformunkhoz, amely körülbelül 40 MB méretű, nincs külső függősége és nem igényel különösebb telepítést a rendszerbe. A deno nem egy monolitikus alkalmazás, hanem Rustban írt crate-csomagok gyűjteménye (deno_core, rusty_v8), amelyek külön-külön is felhasználhatók;
- A program indításához, valamint a modulok betöltéséhez URL-alapú címzést lehet használni. Például a welcome.js program elindításához a következő parancsot használhatja: „deno https://deno.land/std/examples/welcome.js”. A külső forrásokból származó kódot letöltik és a helyi rendszeren gyorsítótárazva tárolják, de soha nem frissül automatikusan (frissítéshez kifejezetten el kell indítani az alkalmazást a „—reload” kapcsolóval);
- Hatékony HTTP hálózati kérések kezelése az alkalmazásokban, a platform a nagy teljesítményű hálózati alkalmazások készítésére lett tervezve;
- Lehetőség univerzális webalkalmazások létrehozására, amelyek Deno-ban és a hagyományos webböngészőben is futtathatók;
- Alapvető modulok standard készlete, amelyek használata nem igényel külső függőségekhez való kötődést. A standard gyűjtemény moduljai további auditáláson és kompatibilitási ellenőrzésen estek át;
- A runtime-on kívül a Deno platform csomagkezelő szerepet is betölt, lehetővé téve a modulok URL-en keresztüli elérését a kódban. Például egy modul betöltéséhez a kódban megadható a következő: „import * as log from „https://deno.land/std/log/mod.ts”. A külső URL-en betöltött fájlok gyorsítótárba kerülnek. szerverek A modulok verziókkal való kötődése a URL-en belül megadott verziószámok által történik, például „https://unpkg.com/liltest@0.0.5/dist/liltest.js”;
- A Web szabványok használatára való orientáció, Promise, fetch és ECMAScript modulok támogatása.
- Kompatibilitás az NPM tárolóban elhelyezett és Node.js platformra készült csomagokkal.
- The integrated system includes a dependency inspection tool (the 'deno info' command) and a code formatting utility (deno fmt);
- Az összes alkalmazáskód egyetlen JavaScript fájlba egyesíthető.
Forrás: opennet.ru

