Node.js autors prezentēja droÅ”o JavaScript platformu Deno 1.0

Pēc divu gadu attÄ«stÄ«bas uzrādÄ«ts pirmais lielais izlaidums Dodiet man 1.0, platforma autonomai lietojumprogrammu izpildei JavaScript un TypeScript, ko var izmantot, lai izveidotu apdarinātājus, kas darbojas serverÄ«. Platformu izstrādā Raiens Dāls (Raiens Dāls), Node.js veidotājs. Tāpat kā Node.js, Deno izmanto JavaScript dzinēju V8, kas tiek izmantota arÄ« pārlÅ«kprogrammās, kuru pamatā ir Chromium. Tajā paŔā laikā Deno nav Node.js dakÅ”a, bet gan jauns projekts, kas izveidots no nulles. Projekta kods izplata saskaņā ar MIT licenci. Asamblejas sagatavots operētājsistēmai Linux, Windows un macOS.

NozÄ«mÄ«gais versijas numurs ir saistÄ«ts ar API stabilizāciju Deno nosaukumvietā, kas ir atbildÄ«gas par lietojumprogrammu mijiedarbÄ«bu ar OS. ProgrammatÅ«ras saskarnes, kas ir lÄ«dz Å”im nav stabilizējies, pēc noklusējuma ir paslēptas un pieejamas tikai tad, ja darbojas ā€œ--nestabilaā€ režīmā. Veidojot jaunas versijas, Ŕādas API pakāpeniski kļūs stabilas. API globālajā nosaukumtelpā, kas ietver tādas izplatÄ«tas funkcijas kā setTimeout() un fetch(), ir pēc iespējas tuvāka parasto tÄ«mekļa pārlÅ«kprogrammu API un ir izstrādāta saskaņā ar pārlÅ«kprogrammu tÄ«mekļa standartiem. Rust nodroÅ”inātās API, kas tiek izmantotas tieÅ”i platformas kodā, kā arÄ« interfeiss spraudņu izstrādei Deno izpildlaikam, vēl nav stabilizēti un turpina attÄ«stÄ«ties.

Jaunas JavaScript platformas izveides galvenie motÄ«vi bija vēlme novērst konceptuālās kļūdas, atzina Node.js arhitektÅ«rā un nodroÅ”ināt lietotājiem droŔāku vidi. Lai uzlabotu droŔību, V8 dzinējs ir rakstÄ«ts Rust, kas ļauj izvairÄ«ties no daudzām ievainojamÄ«bām, kas rodas no zema lÄ«meņa atmiņas manipulācijām, piemēram, pēc brÄ«vpiekļuves, nulles rādÄ«tāja atsauču un bufera pārtēriņa. Platforma tiek izmantota, lai apstrādātu pieprasÄ«jumus nebloķējoŔā režīmā Tokija, rakstÄ«ts arÄ« Rust. Tokio ļauj jums izveidot augstas veiktspējas lietojumprogrammas, kuru pamatā ir notikumu vadÄ«ta arhitektÅ«ra, atbalstot vairāku vÄ«tņu veidoÅ”anu un apstrādājot tÄ«kla pieprasÄ«jumus asinhronā režīmā.

Galvenais Features Deno:

  • Uz droŔību orientēta noklusējuma konfigurācija. Piekļuve failiem, tÄ«kloÅ”ana un piekļuve vides mainÄ«gajiem pēc noklusējuma ir atspējota, un tie ir skaidri jāiespējo. Lietojumprogrammas pēc noklusējuma darbojas izolētās smilÅ”kastes vidēs un nevar piekļūt sistēmas iespējām, nepieŔķirot nepārprotamas atļaujas;
  • IebÅ«vēts TypeScript atbalsts ārpus JavaScript. Standarta TypeScript kompilators tiek izmantots, lai pārbaudÄ«tu veidus un Ä£enerētu JavaScript, kas rada veiktspējas trāpÄ«jumu salÄ«dzinājumā ar JavaScript parsÄ“Å”anu V8. Nākotnē plānojam sagatavot paÅ”i savu TypeScript tipa pārbaudes sistēmas ievieÅ”anu, kas par lielumu uzlabos TypeScript apstrādes veiktspēju;
  • Izpildlaiks tiek nodroÅ”ināts viena atseviŔķa izpildāmā faila (ā€œdenoā€) formā. Lai palaistu lietojumprogrammas, izmantojot Deno, pietiek lejupielādēt tās platformai ir viens izpildāmais fails, apmēram 20 MB, kuram nav ārēju atkarÄ«bu un nav nepiecieÅ”ama Ä«paÅ”a instalÄ“Å”ana sistēmā. Turklāt deno nav monolÄ«ta lietojumprogramma, bet gan kastes iepakojumu kolekcija Rust (deno_core, sarÅ«sējis_v8), ko var izmantot atseviŔķi;
  • Startējot programmu, kā arÄ« lai ielādētu moduļus, var izmantot URL adresÄ“Å”anu. Piemēram, lai palaistu programmu welcome.js, varat izmantot komandu ā€œdeno https://deno.land/std/examples/welcome.jsā€. Kods no ārējiem resursiem tiek lejupielādēts un saglabāts lokālajā sistēmā keÅ”atmiņā, taču tas nekad netiek automātiski atjaunināts (atjaunināŔanai ir skaidri jāpalaiž lietojumprogramma ar karogu ā€œ--reloadā€);
  • EfektÄ«va tÄ«kla pieprasÄ«jumu apstrāde, izmantojot HTTP lietojumprogrammās; platforma ir paredzēta augstas veiktspējas tÄ«kla lietojumprogrammu izveidei;
  • Iespēja izveidot universālas tÄ«mekļa lietojumprogrammas, kuras var izpildÄ«t gan Deno, gan parastā tÄ«mekļa pārlÅ«kprogrammā;
  • pieejamÄ«ba standarta moduļu komplekts, kuras izmantoÅ”anai nav nepiecieÅ”ama saistÄ«Å”anās ar ārējām atkarÄ«bām. Standarta kolekcijas moduļiem ir veikta papildu audita un saderÄ«bas pārbaude;
  • Papildus izpildlaikam Deno platforma darbojas arÄ« kā pakotņu pārvaldnieks un ļauj piekļūt moduļiem pēc koda URL. Piemēram, lai ielādētu moduli, kodā var norādÄ«t ā€œimport * as log no ā€œhttps://deno.land/std/log/mod.tsā€. Faili, kas lejupielādēti no ārējiem serveriem, izmantojot URL, tiek saglabāti keÅ”atmiņā. SaistÄ«Å”ana ar moduļa versijām tiek noteikta, norādot versiju numurus URL iekÅ”pusē, piemēram, ā€œhttps://unpkg.com/[e-pasts aizsargāts]/dist/liltest.js";
  • StruktÅ«ra ietver integrētu atkarÄ«bas pārbaudes sistēmu (komanda "deno info") un utilÄ«tu koda formatÄ“Å”anai (deno fmt);
  • Visus lietojumprogrammu skriptus var apvienot vienā JavaScript failā.

AtŔķirības no Node.js:

  • Deno neizmanto npm pakotņu pārvaldnieku
    un nav saistÄ«ts ar krātuvēm, moduļi tiek adresēti, izmantojot URL vai faila ceļu, un paÅ”us moduļus var ievietot jebkurā tÄ«mekļa vietnē;
  • Deno neizmanto "package.json", lai definētu moduļus;
  • API atŔķirÄ«ba, visas asinhronās darbÄ«bas Deno dod solÄ«jumu;
  • Deno pieprasa skaidru visu nepiecieÅ”amo atļauju definÄ«ciju failiem, tÄ«klam un vides mainÄ«gajiem;
  • Visas kļūdas, kas nav nodroÅ”inātas ar apstrādātājiem, noved pie pieteikuma pārtraukÅ”anas;
  • Deno izmanto ECMAScript moduļu sistēmu un neatbalsta request();
  • Deno iebÅ«vētais HTTP serveris ir rakstÄ«ts TypeScript un darbojas virs vietējām TCP ligzdām, savukārt Node.js HTTP serveris ir rakstÄ«ts C valodā un nodroÅ”ina JavaScript saistÄ«Å”anu. Deno izstrādātāji ir koncentrējuÅ”ies uz visa TCP ligzdas slāņa optimizÄ“Å”anu un vispārÄ«gāka interfeisa nodroÅ”ināŔanu. Deno HTTP serveris nodroÅ”ina zemāku caurlaidspēju, bet garantē paredzamu zemu latentumu. Piemēram, testā vienkārÅ”a lietojumprogramma, kuras pamatā ir Deno HTTP serveris, spēja apstrādāt 25 tÅ«kstoÅ”us pieprasÄ«jumu sekundē ar maksimālo latentumu 1.3 milisekundes. Vietnē Node.js lÄ«dzÄ«ga lietojumprogramma apstrādāja 34 tÅ«kstoÅ”us pieprasÄ«jumu sekundē, bet latentums bija no 2 lÄ«dz 300 milisekundēm.
  • Deno nav saderÄ«gs ar Node.js (NPM) pakotnēm, bet tiek izstrādāts atseviŔķi starpslānis saderÄ«bai ar standarta Node.js bibliotēku, tai attÄ«stoties, arvien vairāk Node.js rakstÄ«to aplikāciju varēs darboties Deno.
  • Avots: opennet.ru

Pievieno komentāru