Ishte publikuar Deno 1.28, një platformë për ekzekutimin e veçantë të aplikacioneve në gjuhët JavaScript dhe TypeScript, e cila mund të përdoret për të krijuar handler-a që punojnë në server. Platformat zhvillohet nga Ryan Dahl, krijuesi i Node.js. Ashtu si në Node.js, Deno përdor motorin JavaScript V8, i cili gjithashtu aplikohet në shfletuesit e bazuar në Chromium. Megjithatë, Deno nuk është një degëzim i Node.js, por përfaqëson një projekt të ri të krijuar nga zero. Kodi i projektit shpërndahet nën licencën MIT. Ndërtesat janë përgatitur për Linux, Windows dhe macOS.
Projekti Deno u krijua për të ofruar një ambient më të sigurt për përdoruesit dhe për të eliminuar gabimet koncepatuale që ishin bërë 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ë vulnerabiliteteve që lindin nga punimi në nivel të ulët me memorien. Për trajtimin e kërkesave në mënyrë jo-bllokuese përdoret platforma Tokio, gjithashtu e shkruar në gjuhën Rust. Tokio lejon krijimin e aplikacioneve me performancë të lartë bazuar në arkitekturën e ndodhi-orientuar (Event-driven), duke mbështetur shumëfishtë dhe trajtimin e kërkesave rrjet në mënyrë asinkrone.
Ndryshimi kyç në versionin e ri është stabilizimi i përputhshmërisë me paketat e vendosura në repo NPM, gjë që lejon përdorimin e më shumë se 1.3 milion moduleve të krijuara për platformën Node.js në Deno. Për shembull, tani aplikacionet bazuar në Deno mund të përdorin module të tilla për organizimin e qasjes së përhershme në të dhëna, si Prisma, Mongoose dhe MySQL, si dhe framework-e për të siguruar funksionimin e front-end-eve, si React dhe Vue. Disa module të NPM ende mbeten të papërputhshme me Deno, për shembull, për shkak të lidhjeve me elemente të veçanta të ambientit të Node.js, si skedari package.json. Gjithashtu, aktualisht nuk është e mundur të përdoret komanda 'deno compile' me module NPM. Në versionet e ardhshme, është planifikuar eliminimi i këtyre papërputhshmërive dhe kufizimeve.
MbĂ«shtetja pĂ«r modelin e mĂ«parshĂ«m tĂ« Deno tĂ« bazuar nĂ« sistemin e moduleve ECMAScript dhe Web API Ă«shtĂ« ruajtur nĂ« tĂ« njĂ«jtin nivel dhe pĂ«r importin e moduleve NPM pĂ«rdoret skema e zakonshme e ngarkesĂ«s bazuar nĂ« URL. PĂ«r t'u referuar tek modulet NPM, Ă«shtĂ« parashikuar njĂ« prefix i veçantĂ« URL-i "npm:", i cili 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Ă« specifikoni 'import { chalk } from "npm:chalk@5";', dhe pĂ«r tĂ« ekzekutuar njĂ« skript NPM nga line e komandĂ«s â "deno run âallow-env âallow-read npm:create-vite-extra".
PĂ«rdorimi i paketave NPM nĂ« Deno Ă«shtĂ« shumĂ« mĂ« i thjeshtĂ« se nĂ« Node.js, pasi nuk Ă«shtĂ« e nevojshme instalimi paraprak i moduleve (modulet instalohet nĂ« fillimin e parĂ« tĂ« aplikacionit), nuk pĂ«rdoret skedari package.json, si dhe nuk pĂ«rdoret nĂ« mĂ«nyrĂ« tĂ« paracaktuar katalogu node_modules (modulet ruhen nĂ« njĂ« katalog tĂ« pĂ«rbashkĂ«t, por ka mundĂ«si rikthimi nĂ« sjelljen e vjetĂ«r pĂ«rmes opsionit "ânode-modules-dir").
NĂ« aplikacionet e bazuara nĂ« NPM ruhet mundĂ«sia e pĂ«rdorimit tĂ« mekanizmave tĂ« ofruar nĂ« Deno pĂ«r ndarjen e qasjes, izolimin dhe aktivizimin e mundĂ«sive tĂ« avancuara qĂ« ndikojnĂ« nĂ« siguri. PĂ«r tĂ« parandaluar sulmet pĂ«rmes varĂ«sive tĂ« dyshimta, Deno bllokon nĂ« mĂ«nyrĂ« tĂ« paracaktuar tĂ« gjitha pĂ«rpjekjet pĂ«r tĂ« pasur qasje nĂ« sistem nga varĂ«sitĂ« dhe nxjerr njĂ« paralajmĂ«rim pĂ«r problemet e zbuluara. PĂ«r shembull, kur moduli pĂ«rpiqet tĂ« fitojĂ« qasje pĂ«r tĂ« shkruar nĂ« /usr/bin/, do tĂ« shfaqet njĂ« kĂ«rkesĂ« pĂ«r miratim tĂ« kĂ«saj operacioni: deno run npm:install-malware â ïž â Deno kĂ«rkon qasje pĂ«r tĂ« shkruar nĂ« /usr/bin/. â KĂ«rkuar nga `install-malware` â Ekzekuto pĂ«rsĂ«ri me âallow-write pĂ«r tĂ« anashkaluar kĂ«tĂ« paralajmĂ«rim. â Lejo? [y/n] (y = po, lejo; n = jo, moho).
Nga përmirësimet e pa lidhura në NPM, në versionin e ri përmendet përditësimi i motorit V8 në versionin 10.9, përcaktimi automatik i skedareve me bllokada, stabilizimi i API-ve 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 të ekzekutuar komandat (zëvendësimi universal për Deno.spawn, Deno.spawnSync dhe Deno.spawnChild).
Karakteristikat kryesore të Deno:
- Orientimi në siguri në konfigurimin e parazgjedhur. Qasjet në skedarë, mundësitë rrjet dhe qasja në variablat e ambientit janë të bllokuara si parazgjedhje dhe kërkojnë aktivizim të qartë. Aplikacionet parazgjedhur ekzekutohen në ambientet e izoluara sandbox dhe nuk mund të aksesojnë mundësitë sistemore pa dhënë autorizime të qarta.
- Mbështetje e ndërtuar për gjuhën TypeScript përveç JavaScript. Për verifikimin e tipeve dhe gjenerimin e JavaScript përdoret kompileri standard i TypeScript, çka çon në një rënie të performancës në krahasim me analizën e JavaScript në V8.
- Runtime ofrohet si në formën e një skedari të vetë-mjaftueshëm ekzekutues ("deno"). Për të ekzekutuar aplikacione me Deno, mjafton të shkarkoni një skedar ekzekutues për platformën tuaj, i cili ka një madhësi prej rreth 30 MB, pa varësi të jashtme dhe pa kërkuar ndonjë instalim të veçantë në sistem. Në të njëjtën kohë, deno nuk është një aplikacion monolitik, por përbëhet nga një koleksion paketash crate në Rust (deno_core, rusty_v8), të cilat mund të përdoren veçmas;
- NĂ« ekzekutimin e programit, si dhe pĂ«r ngarkimin e modules mund tĂ« pĂ«rdoren adresat pĂ«rmes URL. PĂ«r shembull, pĂ«r tĂ« ekzekutuar programin welcome.js mund tĂ« pĂ«rdorni komandĂ«n «deno https://deno.land/std/examples/welcome.js». Kodi nga burimet e jashtme ngarkohet dhe ruhet nĂ« sistemin lokal, por asnjĂ«herĂ« nuk pĂ«rditĂ«sohet automatikisht (pĂ«r pĂ«rditĂ«sim Ă«shtĂ« e nevojshme tĂ« nisni aplikacionin me flamurin «âreload»);
- Përpunim efektiv i kërkesave në aplikacione përmes HTTP, platforma është e dizajnuar për të krijuar aplikacione 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 të web-it;
- Prania e një grupi standard modulësh që nuk kërkon lidhje me varësi të jashtme. Modulët nga koleksioni standard kanë kaluar një auditim shtesë dhe verifikim për përputhshmërinë;
- Përveç runtime-it, platforma Deno gjithashtu vepron si një menaxher paketash dhe lejon që brenda kodit të bëhet referencë te modulët përmes URL-ve. Për shembull, për të ngarkuar një modul, mund të specifikohet në kod «import * as log from «https://deno.land/std/log/mod.ts». Skedarët e ngarkuar nga jashtë serverësh përmes URL-ve, ruhen në cache. Lidhet me versionet e modulëve përmes specifikimit të numrave të versioneve brenda URL-së, për shembull, «https://unpkg.com/liltest@0.0.5/dist/liltest.js»;
- Sistemi i inspektimit të varësive është i integruar (komanda «deno info») dhe një utilitet për formatimin e kodit (deno fmt);
- Të gjitha skriptet e aplikacionit mund të kombinohen në një skedar JavaScript.
Burimi: opennet.ru
