Node.js autorius pristatė saugią JavaScript platformą Deno 1.0

Po dvejų metų plėtros pateiktas pirmasis didelis leidimas „Deno 1.0“, platforma, skirta savarankiškam programų vykdymui „JavaScript“ ir „TypeScript“, kurią galima naudoti kuriant serveryje veikiančias tvarkykles. Platformą sukūrė Ryanas Dahlas (Ryanas Dahlas), Node.js kūrėjas. Kaip ir Node.js, Deno naudoja JavaScript variklį V8, kuris taip pat naudojamas „Chromium“ pagrindu veikiančiose naršyklėse. Tuo pačiu metu Deno nėra Node.js šakutė, o naujas projektas, sukurtas nuo nulio. Projekto kodas išplatino pagal MIT licenciją. Asamblėjai paruoštas „Linux“, „Windows“ ir „MacOS“.

Reikšmingas versijos numeris yra susijęs su API stabilizavimu Deno vardų srityje, kurios yra atsakingos už programų sąveiką su OS. Programinės įrangos sąsajos, kurios iki šiol buvo nestabilizuotas, pagal numatytuosius nustatymus yra paslėpti ir pasiekiami tik tada, kai veikia „--nestabilus“ režimu. Kuriant naujas versijas, tokios API palaipsniui taps stabilios. API visuotinėje vardų srityje, apimanti įprastas funkcijas, tokias kaip setTimeout() ir fetch(), yra kuo artimesnė įprastų žiniatinklio naršyklių API ir yra sukurta pagal žiniatinklio naršyklių standartus. „Rust“ teikiamos API, kurios naudojamos tiesiogiai platformos kode, taip pat sąsaja, skirta „Deno runtime“ įskiepių kūrimui, dar nėra stabilizuotos ir toliau tobulinama.

Pagrindiniai motyvai kuriant naują JavaScript platformą buvo noras pašalinti konceptualias klaidas, pripažino Node.js architektūroje ir vartotojams suteikia saugesnę aplinką. Siekiant pagerinti saugumą, V8 variklis parašytas Rust, todėl išvengiama daugelio pažeidžiamumų, atsirandančių dėl žemo lygio atminties manipuliavimo, pvz., laisvos prieigos, nulinių rodyklės nuorodų ir buferio viršijimo. Platforma naudojama užklausoms apdoroti neblokuojančiu režimu Tokijas, taip pat parašyta Rust. Tokio leidžia jums kurti didelio našumo programas, pagrįstas įvykiais pagrįsta architektūra, palaikančiomis kelių gijų kūrimą ir apdorojančias tinklo užklausas asinchroniniu režimu.

pagrindinis Įranga Deno:

  • Į saugumą orientuota numatytoji konfigūracija. Prieiga prie failų, tinklų kūrimas ir prieiga prie aplinkos kintamųjų yra išjungti pagal numatytuosius nustatymus ir turi būti aiškiai įgalinti. Pagal numatytuosius nustatymus programos veikia izoliuotose smėlio dėžės aplinkose ir negali pasiekti sistemos galimybių nesuteikusios aiškių leidimų;
  • Integruotas „TypeScript“ palaikymas, ne tik „JavaScript“. Standartinis „TypeScript“ kompiliatorius naudojamas tipams tikrinti ir „JavaScript“ generavimui, todėl pasiekiamas našumo įvykis, palyginti su „JavaScript“ analizavimu V8. Ateityje planuojame paruošti savo „TypeScript“ tipo tikrinimo sistemos diegimą, kuris gerokai pagerins „TypeScript“ apdorojimo našumą;
  • Vykdymo laikas pateikiamas kaip vienas savarankiškas vykdomasis failas („deno“). Norėdami paleisti programas naudodami Deno, pakanka atsisiųsti jos platformai yra vienas vykdomasis failas, apie 20 MB dydžio, kuris neturi išorinių priklausomybių ir nereikalauja jokio specialaus diegimo sistemoje. Be to, deno nėra monolitinė programa, o yra dėžių paketų rinkinys Rust (deno_core, rusty_v8), kurį galima naudoti atskirai;
  • Paleidžiant programą, taip pat įkeliant modulius, galite naudoti URL adresavimą. Pavyzdžiui, norėdami paleisti welcome.js programą, galite naudoti komandą „deno https://deno.land/std/examples/welcome.js“. Kodas iš išorinių išteklių atsisiunčiamas ir saugomas vietinės sistemos talpykloje, bet niekada nėra automatiškai atnaujinamas (atnaujinant reikia aiškiai paleisti programą su žyma „--reload“);
  • Efektyvus tinklo užklausų apdorojimas per HTTP programose; platforma skirta kurti didelio našumo tinklo programas;
  • Galimybė kurti universalias žiniatinklio programas, kurios gali būti vykdomos tiek Deno, tiek įprastoje interneto naršyklėje;
  • Prieinamumas standartinis modulių rinkinys, kurio naudojimas nereikalauja susiejimo su išorinėmis priklausomybėmis. Standartinės kolekcijos moduliams buvo atliktas papildomas auditas ir suderinamumo bandymai;
  • Be vykdymo laiko, Deno platforma taip pat veikia kaip paketų tvarkyklė ir leidžia pasiekti modulius pagal URL kodo viduje. Pavyzdžiui, norėdami įkelti modulį, kode galite nurodyti „importuoti * kaip žurnalą iš „https://deno.land/std/log/mod.ts“. Failai, atsisiųsti iš išorinių serverių per URL, saugomi talpykloje. Susiejimas su modulio versijomis nustatomas nurodant versijų numerius URL viduje, pavyzdžiui, „https://unpkg.com/[apsaugotas el. paštu]/dist/liltest.js";
  • Struktūrą sudaro integruota priklausomybės tikrinimo sistema („deno info“ komanda) ir kodo formatavimo priemonė (deno fmt);
  • Visi programų scenarijai gali būti sujungti į vieną „JavaScript“ failą.

Skirtumai nuo Node.js:

  • Deno nenaudoja npm paketų tvarkyklės
    ir nėra susietas su saugyklomis, moduliai adresuojami per URL arba failo kelią, o pačius modulius galima patalpinti bet kurioje svetainėje;
  • Deno nenaudoja "package.json" moduliams apibrėžti;
  • API skirtumas, visi asinchroniniai Deno veiksmai grąžina pažadą;
  • Deno reikalauja aiškiai apibrėžti visus reikalingus leidimus failams, tinklui ir aplinkos kintamiesiems;
  • Visos klaidos, kurios nėra pateiktos tvarkytojams, lemia programos nutraukimą;
  • Deno naudoja ECMAScript modulių sistemą ir nepalaiko request();
  • „Deno“ įtaisytasis HTTP serveris parašytas „TypeScript“ ir veikia ant vietinių TCP lizdų, o „Node.js“ HTTP serveris parašytas C kalba ir suteikia „JavaScript“ susiejimą. Deno kūrėjai sutelkė dėmesį į viso TCP lizdo sluoksnio optimizavimą ir bendresnės sąsajos suteikimą. „Deno HTTP Server“ užtikrina mažesnį pralaidumą, tačiau garantuoja nuspėjamą mažą delsą. Pavyzdžiui, bandymo metu paprasta programa, pagrįsta Deno HTTP serveriu, sugebėjo apdoroti 25 tūkstančius užklausų per sekundę, o didžiausia delsa buvo 1.3 milisekundės. Node.js panaši programa apdorojo 34 tūkstančius užklausų per sekundę, tačiau delsos svyravo nuo 2 iki 300 milisekundžių.
  • Deno nesuderinamas su Node.js (NPM) paketais, tačiau yra kuriamas atskirai tarpsluoksnis Dėl suderinamumo su standartine Node.js biblioteka, jai tobulėjant, vis daugiau Node.js parašytų programų galės veikti Deno.
  • Šaltinis: opennet.ru

Добавить комментарий