Pas dy vjet zhvillimi lëshimi i parë i rëndësishëm , një platformë për ekzekutimin e aplikacioneve të veçanta në gjuhët JavaScript dhe TypeScript, e cila mund të përdoret për të krijuar përpunues, që funksionojnë në server. Platforma zhvillohet nga Ryan Dahl (), krijuesi i Node.js. Ashtu si në Node.js, Deno përdor motorin JavaScript , i cili përdoret gjithashtu në shfletuesit e bazuar në Chromium. Megjithatë, Deno nuk është një degë e Node.js, por përfaqëson një projekt të ri të ndërtuar nga e para. Kodi i projektit nën licencën MIT. Ndërtesat për Linux, Windows dhe macOS.
Numri i rĂ«ndĂ«sishĂ«m i versionit lidhet me stabilizimin e API-sĂ« nĂ« hapĂ«sirĂ«n emĂ«rtuese Deno, e cila Ă«shtĂ« pĂ«rgjegjĂ«se pĂ«r ndĂ«rveprimin e aplikacioneve me OS. NdĂ«rfaqet e softuerit, tĂ« cilat akoma , nĂ« mĂ«nyrĂ« default janĂ« tĂ« fshehura dhe janĂ« tĂ« disponueshme vetĂ«m kur ekzekutohet nĂ« modalitetin "âunstable". NdĂ«rsa formohen versione tĂ« reja, API tĂ« tillĂ« gradualisht do tĂ« kalojnĂ« nĂ« kategorinĂ« e stabilizuar. API nĂ« hapĂ«sirĂ«n globale emĂ«rtuese, duke pĂ«rfshirĂ« funksione tĂ« zakonshme si setTimeout() dhe fetch(), Ă«shtĂ« sa mĂ« afĂ«r mundĂ«sive tĂ« API tĂ« shfletuesve normalĂ« dhe zhvillohet nĂ« pĂ«rputhje me standardet Web pĂ«r shfletuesit. API-tĂ« e ofruara nga Rust, tĂ« cilat pĂ«rdoren direkt nĂ« kodin e platformĂ«s, si dhe ndĂ«rfaqja pĂ«r zhvillimin e pluginĂ«ve pĂ«r Deno runtime, akoma nuk janĂ« stabilizuar dhe vazhdojnĂ« tĂ« zhvillohen.
Motivacionet kryesore për krijimin e kësaj platforme të re JavaScript ishin dëshira për të eliminuar gabimet konceptuale, në arkitekturën e Node.js, dhe për të ofruar përdoruesve një mjedis më të sigurt. Për të rritur sigurinë, mbulesa për motorin V8 është shkruar në gjuhën Rust, e cila lejon shmangien e shumë vulnerabiliteteve që ndodhin për shkak të punës me kujtesën në nivel të ulët, si për shembull, qasja në një zonë kujtese pas çlirimit të saj, dereferencimi i treguesve null dhe shkelja e kufijve të buffers. Për trajtimin e kërkesave në modalitetin jo-bllokues përdoret platforma , gjithashtu e shkruar në gjuhën Rust. Tokio lejon krijimin e aplikacioneve me performancë të lartë të bazuara në arkitekturën e orientuar nga ngjarjet (Event-driven), duke mbështetur shumëprocësorin dhe trajtimin e kërkesave të rrjetit në mënyrë asinkrone.
Main 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 integruar për gjuhën TypeScript përveç JavaScript. Për verifikimin e llojeve dhe gjenerimin e JavaScript përdoret kompilator standard i TypeScript, gjë që çon në një rënie të performancës në krahasim me analizën e JavaScript në V8. Në të ardhmen, është planifikuar përgatitja e një implementimi të vetin të sistemit të verifikimit të llojeve të TypeScript, i cili do të lejojë një rritje të rëndësishme të performancës së trajtimit të TypeScript;
- Runtime ofrohet në formën e një skedari ekzekutiv të pavarur («deno»). Për të ekzekutuar aplikacione duke përdorur Deno, mjafton për platformën tuaj, një skedar ekzekutiv, me një madhësi prej rreth 20 MB, pa varësi të jashtme dhe që nuk kërkon ndonjë instalim të veçantë në sistem. Njëkohësisht, Deno nuk është një aplikacion monolit, por përbën një koleksion paketash crate në Rust (, ), të cilat mund të përdoren ndaras;
- 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 , përdorimi i të cilave nuk kërkon lidhej me varësi të jashtme. Modulët e koleksionit standard kanë kaluar një audit të mëtejshëm dhe verifikim për përputhshmëri;
- Përveç runtime-it, platforma Deno gjithashtu shërben si menaxher paketash dhe lejon qasjen në module përmes URL. 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 serverë të jashtëm përmes URL ruhet në cache. Lidhjet me versionet e moduleve përcaktohen përmes numrave të versioneve brenda URL, 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.
Dallimet nga Node.js:
- Deno nuk përdor menaxherin e pakove npm
dhe nuk lidhet me depozitat, adresimi i moduleve bëhet përmes URL-së ose me rrugë skedari, ndërsa modulet mund të vendosen në çdo faqe; - Në Deno nuk përdoret "package.json" për të përcaktuar modulet;
- Dallimi në API, të gjitha veprimet asinkrone në Deno kthejnë promise;
- Deno kërkon që të gjithë mirëqeniet e nevojshme për skedarët, rrjetet dhe variablat e mjedisit të përcaktohen në mënyrë eksplicite;
- Të gjithë gabimet që nuk kanë trajtues të caktuar çojnë në përfundimin e ekzekutimit të aplikacionit;
- Në Deno aplikohet sistemi i moduleve ECMAScript dhe nuk mbështetet require();
- Serveri HTTP i integruar në Deno është shkruar në TypeScript dhe funksionon mbi soket TCP natyralë, ndërsa serveri HTTP i Node.js është shkruar në C dhe ofron lidhje për JavaScript. Zhvilluesit e Deno kanë përqendruar përpjekjet në optimizimin e gjithë shtresës së soketeve TCP dhe ofrimin e një ndërfaqe më të gjerë. Serveri HTTP i Deno siguron një kapacitet më të ulët, por garanton vonesa të parashikueshme dhe të ulëta. Për shembull, në një test, një aplikacion i thjeshtë bazuar në serverin HTTP të Deno arriti të trajtojë 25 mijë kërkesa në sekondë me një vonesë maksimale prej 1.3 milisekondash. Në Node.js, një aplikacion i ngjashëm trajtoi 34 mijë kërkesa në sekondë, por vonesat variuan nga 2 deri në 300 milisekonda.
- Deno nuk është i përputhshëm me paketat për Node.js (NPM), por zhvillohet veçmas për përputhshmëri me bibliotekën standarde të Node.js, ndërsa zhvillohet me të cilin në Deno do të mund të ekzekutohen gjithnjë e më shumë aplikacione të shkruara për Node.js.
Burimi: opennet.ru
