udgivelsen af projektet , der tilbyder en platform, der ligner Node.js til isoleret udførelse af applikationer skrevet i JavaScript og TypeScript, og kan bruges til at køre applikationer uden binding til en browser, for eksempel til at oprette serverbaserede handler. Deno bruger JavaScript-motoren , der også anvendes i Node.js og browsere baseret på Chromium-projektet. Koden til projektet er udgivet under MIT-licensen. Projektet ledes af Ryan Dahl (), skaber af JavaScript-platformen Node.js.
Et af hovedformålene med at skabe en ny runtime for JavaScript er at tilbyde en mere sikker omgivelser. For at øge sikkerheden er indpakningen omkring V8-motoren skrevet i Rust, hvilket gør det muligt at undgå mange sårbarheder, der opstår ved lavniveau håndtering af hukommelse, såsom adgang til hukommelsens område efter det er frigivet, dereferencering af nulpegepinde og overskridelse af buffergrænser. For at håndtere anmodninger i non-blocking mode anvendes platformen , som også er skrevet i Rust. Tokio muliggør oprettelsen af højtydende applikationer baseret på en begivenhedsdrevet arkitektur, der understøtter multitrådning og behandling af netværksforespørgsler i asynkron tilstand.
Vigtige Deno:
- Sikkerhedsorientering i standardkonfigurationen. Filadgang, netværksmuligheder og adgang til miljøvariabler er som standard blokeret og kræver eksplicit aktivering;
- Indbygget støtte til TypeScript udover JavaScript;
- Runtime leveres som en enkelt, selvforsynende eksekverbar fil ('deno'). For at køre programmer med Deno er det nok til sin platform en enkelt eksekverbar fil, omkring 10 MB stor, uden eksterne afhængigheder og kræver ikke nogen særlig installation i systemet;
- Ved kørsel af programmer og til indlæsning af moduler kan der anvendes URL-adresser. For eksempel kan man bruge kommandoen 'deno https://deno.land/std/examples/welcome.js' til at køre programmet welcome.js. Kode fra eksterne ressourcer hentes og cachelagres på det lokale system, men opdateres aldrig automatisk (for at opdatere kræver det, at man eksplicit starter applikationen med flaget '--reload');
- Effektiv håndtering af HTTP-netværksanmodninger, platformen er designet til at skabe højtydende netværksapplikationer;
- Mulighed for at skabe universelle webapplikationer, der kan køre både i Deno og i almindelige web-browsere;
- Udover runtime fungerer Deno også som en pakkehåndtering og tillader at tilgå moduler via URL i koden. For eksempel kan man angive "import * as log from "https://deno.land/std/log/mod.ts" for at indlæse en modul. Filer, der hentes fra eksterne servere via URL, caches. Versionsbinding af moduler bestemmes gennem angivelse af versionnumre i URL'en, for eksempel "https://unpkg.com/liltest@0.0.5/dist/liltest.js";
- Indbygget system til inspektion af afhængigheder (kommandoen «deno info») og et værktøj til kodeformatering (deno fmt).
- Til udviklere af applikationer et sæt standardmoduler, der har gennemgået yderligere revision og kompatibilitetskontrol;
- Alle applikationsscripts kan sammenlægges til én JavaScript-fil.
Forskelle fra Node.js:
- Deno bruger ikke npm som pakkehåndtering.
Og binder sig ikke til repositorier; moduler adresseres via URL eller filsti, og modulerne kan placeres på enhver hjemmeside; - I Deno bruges "package.json" ikke til at definere moduler;
- API-forskelle; alle asynkrone handlinger i Deno returnerer et promise;
- Deno kræver eksplicit angivelse af alle nødvendige tilladelser for filer, netværk og miljøvariabler;
- Alle fejl, der ikke har håndterere, fører til, at applikationen afsluttes;
- I Deno anvendes ECMAScript-modulsystemet, og require() understøttes ikke.
Kilde: opennet.ru
