Höfundur Node.js kynnti öruggan JavaScript vettvang Deno 1.0

Eftir tveggja ára þróun fram fyrsta stóra útgáfan Gefðu mér 1.0, vettvangur fyrir sjálfstæða keyrslu á forritum í JavaScript og TypeScript, sem hægt er að nota til að búa til meðhöndlara sem keyra á þjóninum. Vettvangurinn er þróaður af Ryan Dahl (Ryan Dahl), skapari Node.js. Eins og Node.js notar Deno JavaScript vél V8, sem einnig er notað í vöfrum sem byggja á Chromium. Á sama tíma er Deno ekki gaffal af Node.js, heldur er nýtt verkefni búið til frá grunni. Verkefnakóði dreift af undir MIT leyfi. Samkomur undirbúinn fyrir Linux, Windows og macOS.

Mikilvæg útgáfunúmer er tengt stöðugleika API í Deno nafnrýminu, sem bera ábyrgð á samskiptum forrita við stýrikerfið. Hugbúnaðarviðmót sem hafa hingað til ekki stöðugt, eru sjálfgefið falin og aðeins fáanleg þegar keyrt er í „--óstöðug“ ham. Þegar nýjar útgáfur myndast verða slík API smám saman stöðug. API í hinu alþjóðlega nafnrými, sem inniheldur algengar aðgerðir eins og setTimeout() og fetch(), er eins nálægt API hefðbundinna vafra og hægt er og er þróað í samræmi við vefstaðla fyrir vafra. Forritaskilin frá Rust, sem eru notuð beint í pallakóðann, sem og viðmótið til að þróa viðbætur fyrir Deno keyrslutíma, hafa ekki enn verið stöðugar og halda áfram að þróast.

Helstu hvatirnar til að búa til nýjan JavaScript vettvang voru löngunin til að útrýma hugmyndalegum villum, viðurkenndi í Node.js arkitektúrnum og veita notendum öruggara umhverfi. Til að bæta öryggi er V8 vélin skrifuð í Rust, sem kemur í veg fyrir marga af þeim veikleikum sem myndast vegna minnisnotkunar á lágu stigi, svo sem eftir-frjáls aðgangur, núll bendill og yfirkeyrsla á biðminni. Vettvangurinn er notaður til að vinna úr beiðnum í ólokandi ham Tokyo, einnig skrifað í Rust. Tokio gerir þér kleift að búa til afkastamikil forrit byggð á atburðadrifnum arkitektúr, sem styður fjölþráða og vinnslu netbeiðna í ósamstilltum ham.

Helstu Features Deno:

  • Öryggismiðuð sjálfgefna stilling. Skráaaðgangur, netkerfi og aðgangur að umhverfisbreytum eru sjálfgefið óvirkt og verður að vera sérstaklega virkt. Forrit keyra sjálfgefið í einangruðu sandkassaumhverfi og geta ekki fengið aðgang að kerfisgetu án þess að veita skýrar heimildir;
  • Innbyggður stuðningur fyrir TypeScript umfram JavaScript. Venjulegur TypeScript þýðandinn er notaður til að athuga gerðir og búa til JavaScript, sem leiðir til árangurs í samanburði við JavaScript þáttun í V8. Í framtíðinni ætlum við að undirbúa okkar eigin útfærslu á TypeScript tegundaeftirlitskerfinu, sem mun bæta TypeScript vinnsluafköst um stærðargráðu;
  • Runtime kemur í formi einnar sjálfstætt keyrsluskrár ("deno"). Það er nóg til að keyra forrit með Deno sækja fyrir vettvang þess er ein keyranleg skrá, um 20 MB að stærð, sem hefur enga utanaðkomandi ósjálfstæði og krefst ekki sérstakrar uppsetningar á kerfinu. Þar að auki er deno ekki einhæft forrit, heldur er safn af rimlapökkum í Rust (deno_core, ryðgaður_v8), sem hægt er að nota sérstaklega;
  • Þegar forritið er ræst, sem og til að hlaða einingar, geturðu notað vefslóð. Til dæmis, til að keyra welcome.js forritið, geturðu notað skipunina „deno https://deno.land/std/examples/welcome.js“. Kóði frá utanaðkomandi auðlindum er hlaðið niður og í skyndiminni á staðbundnu kerfi, en er aldrei sjálfkrafa uppfærður (uppfærsla krefst þess að forritið sé keyrt með „--endurhlaða“ fánanum);
  • Skilvirk vinnsla netbeiðna í gegnum HTTP í forritum; vettvangurinn er hannaður til að búa til afkastamikil netforrit;
  • Hæfni til að búa til alhliða vefforrit sem hægt er að keyra bæði í Deno og í venjulegum vafra;
  • framboð staðlað sett af einingum, en notkun þess krefst ekki bindingar við ytri ósjálfstæði. Einingar úr staðalsafninu hafa gengist undir viðbótarúttekt og samhæfnipróf;
  • Til viðbótar við keyrslutíma virkar Deno pallurinn einnig sem pakkastjóri og gerir þér kleift að fá aðgang að einingum eftir slóð inni í kóðanum. Til dæmis, til að hlaða einingu, geturðu tilgreint í kóðanum „innflutningur * sem log frá „https://deno.land/std/log/mod.ts“. Skrár sem hlaðið er niður af ytri netþjónum í gegnum vefslóð eru í skyndiminni. Binding við útgáfur eininga er ákvörðuð með því að tilgreina útgáfunúmer inni í vefslóðinni, til dæmis „https://unpkg.com/[netvarið]/dist/liltest.js";
  • Uppbyggingin inniheldur samþætt skoðunarkerfi fyrir ósjálfstæði („deno info“ skipunin) og tól fyrir kóðasnið (deno fmt);
  • Hægt er að sameina öll forritaforskriftir í eina JavaScript skrá.

Mismunur frá Node.js:

  • Deno notar ekki npm pakkastjóra
    og er ekki bundið við geymslur, einingar eru sendar í gegnum vefslóð eða með skráarslóð og einingarnar sjálfar er hægt að setja á hvaða vefsíðu sem er;
  • Deno notar ekki „package.json“ til að skilgreina einingar;
  • API munur, allar ósamstilltar aðgerðir í Deno skila loforð;
  • Deno krefst skýrrar skilgreiningar á öllum nauðsynlegum heimildum fyrir skrár, netkerfi og umhverfisbreytur;
  • Allar villur sem ekki eru veittar með meðhöndlun leiða til lokunar umsóknar;
  • Deno notar ECMAScript einingakerfið og styður ekki require();
  • Innbyggði HTTP þjónn Deno er skrifaður í TypeScript og keyrir ofan á innfæddum TCP innstungum, en Node.js HTTP þjónninn er skrifaður í C ​​og veitir bindingar fyrir JavaScript. Hönnuðir Deno hafa lagt áherslu á að fínstilla allt TCP falslagið og veita almennara viðmót. Deno HTTP Server veitir minni afköst en tryggir fyrirsjáanlega lága leynd. Til dæmis, í prófinu, gat einfalt forrit byggt á Deno HTTP netþjóni unnið úr 25 þúsund beiðnum á sekúndu með hámarks leynd upp á 1.3 millisekúndur. Í Node.js afgreiddi sambærilegt forrit 34 þúsund beiðnir á sekúndu, en biðtímar voru á bilinu 2 og 300 millisekúndur.
  • Deno er ekki samhæft við pakka fyrir Node.js (NPM), heldur er verið að þróa sérstaklega millilag fyrir samhæfni við staðlaða Node.js bókasafnið, eftir því sem það þróast, munu fleiri og fleiri forrit sem eru skrifuð fyrir Node.js geta keyrt í Deno.
  • Heimild: opennet.ru

Bæta við athugasemd