Lëshohet versioni Deno 1.28, një platformë për ekzekutimin e izoluar të aplikacioneve në gjuhët JavaScript dhe TypeScript, e cila mund të përdoret për të krijuar handlera që punojnë në server. Platforma zhvillohet nga Ryan Dahl, krijuesi i Node.js. Si në Node.js, Deno përdor motorin JavaScript V8, i cili po ashtu përdoret në shfletuesit e bazuar në Chromium. Megjithatë, Deno nuk është një nënprojekt i Node.js, por është një projekt tërësisht i ri, i ndërtuar nga e para. Kodi i projektit shpërndahet nën licencën MIT. Ndërtimet janë përgatitur për Linux, Windows dhe macOS.
Projekti Deno u krijua për t'i ofruar përdoruesve një mjedis më të sigurt dhe për të eliminuar gabimet konceptuale të bëra në arkitekturën e Node.js. Për të rritur sigurinë, mbështjellja rreth motorit V8 është shkruar në gjuhën Rust, e cila lejon shmangien e shumë dobësive që lindin për shkak të punës me kujtesën në nivel të ulët. Për të trajtuar kërkesat në mënyrë jo bllokuese, përdoret platforma Tokio, gjithashtu e shkruar në Rust. Tokio lejon krijimin e aplikacioneve me performancë të lartë, të bazuara në arkitekturën e orientuar nga ngjarjet (Event-driven), që mbështesin shumëproneshmërinë dhe trajtimin e kërkesave rrjetore në mënyrë asinhrone.
Ndryshimi kyç në versionin e ri është stabilizimi i kompatibilitetit me paketat që janë publikuar në depojnë NPM, gjë që lejon përdorimin në Deno të më shumë se 1.3 milion moduleve të krijuara për platformën Node.js. Për shembull, në aplikacionet e bazuara në Deno tani mund të përdoren module për organizimin e aksesit të qëndrueshëm në të dhëna, si Prisma, Mongoose dhe MySQL, si dhe korniza për sigurimin e funksionimit të frontendëve, si React dhe Vue. Disa module NPM ende mbeten jocompatibile me Deno, për shembull, për shkak të lidhjeve me elemente specifike të mjedisit të Node.js, siç është skeda package.json. Gjithashtu, ende nuk është e mundur të përdoret komanda “deno compile” me modulet NPM. Në versionet e ardhshme pritet të eliminohen këto jocompatibilitete dhe kufizime.
Mbështetja për modelin e mëparshëm në Deno, i bazuar në sistemin e moduleve ECMAScript dhe Web API, është ruajtur në të njëjtin nivel dhe për importimin e moduleve NPM përdoret skema e zakonshme e Deno për ngarkimin bazuar në URL. Për qasje në modulet NPM, janë parashikuar një para-shtesë të veçantë URL “npm:”, e cila mund të përdoret në mënyrë analogjike me modulet e zakonshme të Deno. Për shembull, për të importuar një modul NPM, mund të specifikohet ‘import { chalk } from “npm:chalk@5”;’, dhe për të drejtuar një skript NPM nga linja e komandës — “deno run —allow-env —allow-read npm:create-vite-extra”.
Përdorimi i pakove NPM në Deno është shumë më i thjeshtë sesa në Node.js, pasi nuk është e nevojshme instalimi paraprak i moduleve (modulet instalohen gjatë ekzekutimit të parë të aplikacionit), nuk përdoret skeda package.json, si dhe nuk përdoret katalogu node_modules si standart (modulet ruhen në një katalog të përbashkët, por ekziston mundësia për të kthyer sjelljen e vjetër duke përdorur opsionin “—node-modules-dir”).
Në aplikacionet e bazuara në NPM ruhet mundësia e përdorimit të mekanizmave të ofruar nga Deno për ndarjen e aksesit, izolimin dhe aktivizimin e funksionaliteteve të avancuara që ndikohet nga siguria. Për të parandaluar sulmet përmes varësive të dyshimta, Deno bllokon në mënyrë standarde të gjitha përpjekjet për akses në sistem nga varësitë dhe jep një paralajmërim për problemet e zbuluara. Për shembull, kur një modul përpiqet të fitojë akses për të shkruar në /usr/bin/, do të shfaqet një pyetje për konfirmimin e kësaj operacioni: deno run npm:install-malware ⚠️ ┌ Deno kërkon akses për të shkruar në /usr/bin/. ├ Kërkuar nga `install-malware` ├ Përsëritni me —allow-write për të anashkaluar këtë pyetje. └ Lejo? [y/n] (y = po, lejo; n = jo, moho).
Nga përmirësimet që nuk lidhen me NPM në versionin e ri, përmendet azhurnimi i motorit V8 në versionin 10.9, përcaktimi automatik i skedave me bllokime, stabilizimi i API-së Deno.bench(), Deno.gid(), Deno.networkInterfaces(), Deno.systemMemoryInfo() dhe Deno.uid(), si dhe shtimi i një API të ri të pa stabilizuar Deno.Command() për ekzekutimin e komandave (zëvendësimi universal Deno.spawn, Deno.spawnSync dhe Deno.spawnChild).
Karakteristikat kryesore të Deno:
- Orientimi për sigurinë në konfigurimin e parazgjedhur. Qasjet në skedarë, mundësitë rrjet dhe qasja në variablat mjedisit të parazgjedhur janë bllokuar dhe kërkojnë aktivizim të qartë. Aplikacionet e parazgjedhura startojnë në ambientet e izoluara sandbox dhe nuk mund të aksesojnë mundësitë sistemore pa u dhënë autorizime të qarta;
- Përkrahje e integruar për gjuhën TypeScript përveç JavaScript. Për të verifikuar llojet dhe për të gjeneruar JavaScript, përdoret kompajleri i brendshëm i TypeScript, gjë që çon në rënie të performancës krahasuar me analizën e JavaScript në V8;
- Runtime-ofertat vijnë në formën e një skedari ekzekutiv të vetë-mjaftueshëm (“deno”). Për të ekzekutuar aplikacione duke përdorur Deno, mjafton të shkarkoni për platformën tuaj një skedar ekzekutiv prej rreth 30 MB, pa varësi të jashtme dhe që nuk kërkon ndonjë instalim të veçantë në sistem. Në këtë mënyrë, deno nuk është një aplikacion monolitik, por përbën një koleksion të paketave crate në Rust (deno_core, rusty_v8), të cilat mund të përdoren veçmas;
- Kur stradhet programi, si dhe për ngarkimin e moduleve, mund të përdoren adresat përmes URL. Për shembull, për të nisur programin welcome.js mund të përdoret komanda «deno https://deno.land/std/examples/welcome.js». Kodi nga burime të jashtme ngarkohet dhe ruhet në sistemin lokal, por nuk përditësohet automatikisht (për përditësimin e kërkohet të fillohet aplikacioni me flagun «—reload»);
- Përpunimi efektiv i kërkesave rrjet në aplikacione përmes HTTP, platforma është e dizajnuar për krijimin e aplikacioneve rrjetore me performancë të lartë;
- Mundësia për të krijuar aplikacione web universale, të cilat mund të ekzekutohen si në Deno ashtu edhe në shfletuesin e zakonshëm;
- Prania e një suite standard modulash, përdorimi i të cilave nuk kërkon lidhje me varësi të jashtme. Modulat nga koleksioni standard kanë kaluar auditim të mëtejshëm dhe kontroll për përputhshmëri;
- Përveç runtime, platforma Deno gjithashtu shërben si menaxher paketash dhe lejon që brenda kodit të referohen modulave përmes URL. Për shembull, për të ngarkuar një modul, mund të tregoni në kod «import * as log from «https://deno.land/std/log/mod.ts». Skedarët e ngarkuar nga burime të jashtme servera për URL, e ruajtur. Lidhja me versionet e moduleve përcaktohet përmes numrave të versioneve brenda URL, për shembull, «https://unpkg.com/liltest@0.0.5/dist/liltest.js»;
- Pjesë e integruar e sistemit të inspektimit të varësive (komanda «deno info») dhe utilitarit për formatimin e kodit (deno fmt);
- Të gjitha skenarët e aplikacionit mund të bashkohen në një skedar JavaScript.
Burimi: opennet.ru
