Pas pas dy vite zhvillimi dalësi i parë i rëndësishëm , 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 trajtues që funksionojnë në server. Platforma po zhvillohet nga Ryan Dahl (), krijuesi i Node.js. Ashtu si në Node.js, Deno përdor motorin JavaScript , i cili gjithashtu aplikohet në shfletues të bazuar në Chromium. Ndërkohë, Deno nuk është një degëzim i Node.js, por përfaqëson një projekt të ri të krijuar 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 nĂ« hapĂ«sirĂ«n emĂ«rore Deno, e cila pĂ«rgjigjet pĂ«r ndĂ«rveprimin e aplikacioneve me OS. NdĂ«rfaqet qĂ« pĂ«r momentin , pĂ«r default janĂ« tĂ« fshehura dhe janĂ« tĂ« disponueshme vetĂ«m kur ekzekutohen nĂ« modin «âunstable». Me kalimin e formimit tĂ« versioneve tĂ« reja, API tĂ« tillĂ« gradualisht do tĂ« transferohen nĂ« kategorinĂ« e stabilizuar. API nĂ« hapĂ«sirĂ«n globale, qĂ« pĂ«rfshin funksione tĂ« zakonshme si setTimeout() dhe fetch(), janĂ« sa mĂ« afĂ«r API tĂ« shfletuesve tĂ« zakonshĂ«m dhe zhvillohen nĂ« pĂ«rputhje me standardet Web pĂ«r shfletuesit. API tĂ« ofruara nga Rust, tĂ« cilat pĂ«rdoren drejtpĂ«rdrejt nĂ« kodin e platformĂ«s, si dhe ndĂ«rfaqja pĂ«r zhvillimin e plginĂ«ve pĂ«r Deno runtime, pĂ«r momentin nuk janĂ« stabilizuar dhe vazhdojnĂ« tĂ« zhvillohen.
Motivacionet kryesore për krijimin e një 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ë ambient më të sigurt. Për të rritur sigurinë, mbështjellja për motorin V8 është shkruar në gjuhën Rust, e cila shmang shumë dobësi që ndodhin për shkak të punës mememori të nivelit të ulët, siç janë akseset në fusha memorie pas lirimit të saj, dereferencimi i treguesve null dhe dalja jashtë kufijve të tamponit. Për procesimin e kërkesave në mënyrë jo bllokuese, përdoret platforma , gjithashtu e shkruar në gjuhën Rust. Tokio lejon krijimin e aplikacioneve me performancë të lartë mbi një arkitekturë të orientuar nga ngjarjet (Event-driven), që mbështesin shumë-threading dhe përpunimin e kërkesave rrjeti në mënyrë asinkrone.
Ndryshimet kryesore 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;
- Mbështetje e integruar për gjuhën TypeScript përveç JavaScript. Për verifikimin e tipeve dhe gjenerimin e JavaScript përdoret kompiler i brendshëm i TypeScript, që çon në një rënien e performancës krahasuar me analizimin e JavaScript nga V8. Në të ardhmen planifikohet të përgatitet një implementim i vetë sistemit të verifikimit të tipeve të TypeScript, i cili do të lejojë një rritje të konsiderueshme në performancën e përpunimit të TypeScript;
- Runtime vjen nĂ« formĂ«n e njĂ« skedari ekzekutiv tĂ« pavarur (âdenoâ). PĂ«r tĂ« ekzekutuar aplikacione duke pĂ«rdorur Deno, mjafton pĂ«r platformĂ«n e tij, njĂ« skedar ekzekutiv, me njĂ« madhĂ«si rreth 20 MB, pa varĂ«si tĂ« jashtme dhe pa kĂ«rkuar ndonjĂ« instalim tĂ« veçantĂ« nĂ« sistem. MegjithatĂ«, deno nuk Ă«shtĂ« njĂ« aplikacion monolit, por pĂ«rbĂ«het nga njĂ« koleksion paketash crate nĂ« Rust (, ), 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 , përdorimi i të cilave nuk kërkon lidhje me varësi të jashtme. Modul të koleksionit standard kanë kaluar audite dhe verifikime të shtesë për compatibilitet;
- Përveç runtime, platforma Deno gjithashtu funksionon si menaxher paketash dhe lejon që brenda kodit të referohesh modulëve përmes URL. Për shembull, për të ngarkuar një modul, mund të specifikoni 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 ruhen në cache. Kapitulli i versioneve të moduleve përcaktohet përmes numrave të versioneve të specifikuar 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.
Dallimet nga Node.js:
- Deno nuk përdor menaxherin e paketave npm
dhe nuk lidhët me repozitorë, adresimi i moduleve bëhet përmes URL ose rrugës së skedarit, dhe modulet mund të vendosen në çdo site; - Në Deno nuk përdoret «package.json» për të përcaktuar modulet;
- Dallimi i API-ve, të gjitha veprimet asinkrone në Deno kthejnë promise;
- Deno kërkon përcaktimin e qartë të të gjitha lejimeve të nevojshme për skedarët, rrjetin dhe variablat e mjedisit;
- Të gjitha gabimet pa trajtues shkaktojnë ndalimin e ekzekutimit të aplikacionit;
- Në Deno aplikohet sistemi i moduleve ECMAScript dhe nuk mbështetet require();
- Serveri HTTP i integruar i Deno është shkruar në TypeScript dhe funksionon mbi TCP-soket natyrore, 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 e tyre në optimizimin e të gjithë shtresës së TCP-soket dhe ofrimin e një ndërfaqeje më të përgjithshme. Serveri HTTP i Deno ofron një bandë më të vogël, por garanton vonesa të parashikueshme të ulëta. Për shembull, në test, një aplikacion i thjeshtë i bazuar në serverin HTTP të Deno mundi të përpunonte 25,000 kërkesa në sekondë me një vonesë maksimale prej 1.3 milisekondash. Në Node.js, aplikacioni analog përpunoi 34,000 kërkesa në sekondë, por vonesat variuan nga 2 në 300 milisekonda.
- Deno nuk është në përputhshmëri me pako për Node.js (NPM), por po zhvillohet ndaras për përputhshmëri me bibliotekën standarde të Node.js, ndërsa në zhvillimin e saj, në Deno do të mund të ekzekutohen gjithnjë e më shumë aplikacione të shkruara për Node.js.
Burimi: opennet.ru
