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
