Avtor Node.js je predstavil varno JavaScript platformo Deno 1.0

Po dveh letih razvoja predstavljeno prva večja izdaja Daj mi 1.0, platforma za samostojno izvajanje aplikacij v JavaScript in TypeScript, ki se lahko uporablja za ustvarjanje upravljavcev, ki se izvajajo na strežniku. Platformo je razvil Ryan Dahl (Ryan Dahl), ustvarjalec Node.js. Tako kot Node.js tudi Deno uporablja motor JavaScript V8, ki se uporablja tudi v brskalnikih, ki temeljijo na Chromiumu. Hkrati Deno ni fork Node.js, ampak je nov projekt, ustvarjen iz nič. Koda projekta distributer pod licenco MIT. Skupščine pripravljeni za Linux, Windows in macOS.

Pomembna številka različice je povezana s stabilizacijo API-jev v imenskem prostoru Deno, ki so odgovorni za interakcijo aplikacij z OS. Programski vmesniki, ki so jih doslej ni stabiliziran, so privzeto skrite in na voljo samo, ko se izvajajo v načinu »--nestabilno«. Ko se oblikujejo nove različice, bodo takšni API-ji postopoma postali stabilni. API v globalnem imenskem prostoru, ki vključuje običajne funkcije, kot sta setTimeout() in fetch(), je čim bližje API-ju običajnih spletnih brskalnikov in je razvit v skladu s spletnimi standardi za brskalnike. API-ji, ki jih zagotavlja Rust in se uporabljajo neposredno v kodi platforme, kot tudi vmesnik za razvoj vtičnikov za izvajalno okolje Deno še niso bili stabilizirani in se še naprej razvijajo.

Ključni motivi za ustvarjanje nove platforme JavaScript so bili želja po odpravi konceptualnih napak, priznal v arhitekturi Node.js in uporabnikom zagotoviti bolj varno okolje. Za izboljšanje varnosti je motor V8 napisan v Rustu, s čimer se izogne ​​številnim ranljivostim, ki izhajajo iz manipulacije pomnilnika na nizki ravni, kot so dostop po brezplačnem dostopu, dereferenciranje ničelnega kazalca in prekoračitev medpomnilnika. Platforma se uporablja za obdelavo zahtevkov v načinu brez blokiranja Tokio, napisano tudi v Rust. Tokio vam omogoča ustvarjanje visoko zmogljivih aplikacij, ki temeljijo na arhitekturi, ki temelji na dogodkih, podpira večnitnost in obdelavo omrežnih zahtev v asinhronem načinu.

Glavni funkcije Deno:

  • Varnostno usmerjena privzeta konfiguracija. Dostop do datotek, povezovanje v omrežje in dostop do spremenljivk okolja so privzeto onemogočeni in morajo biti izrecno omogočeni. Aplikacije se privzeto izvajajo v izoliranih okoljih peskovnika in ne morejo dostopati do sistemskih zmogljivosti brez dodelitve izrecnih dovoljenj;
  • Vgrajena podpora za TypeScript poleg JavaScripta. Standardni prevajalnik TypeScript se uporablja za preverjanje tipov in generiranje JavaScripta, kar vodi do zmanjšanja zmogljivosti v primerjavi z razčlenjevanjem JavaScripta v V8. V prihodnosti načrtujemo pripravo lastne implementacije sistema za preverjanje tipov TypeScript, ki bo izboljšala zmogljivost obdelave TypeScript za red velikosti;
  • Runtime je v obliki ene same samostojne izvedljive datoteke (»deno«). Za zagon aplikacij z uporabo Deno je dovolj naloži za svojo platformo obstaja ena izvedljiva datoteka, velika približno 20 MB, ki nima zunanjih odvisnosti in ne zahteva posebne namestitve v sistem. Poleg tega deno ni monolitna aplikacija, ampak je zbirka paketov zabojev v Rustu (deno_core, rusty_v8), ki se lahko uporablja ločeno;
  • Pri zagonu programa in pri nalaganju modulov lahko uporabite naslavljanje URL. Če želite na primer zagnati program welcome.js, lahko uporabite ukaz »deno https://deno.land/std/examples/welcome.js«. Koda iz zunanjih virov se prenese in shrani v predpomnilnik v lokalnem sistemu, vendar se nikoli samodejno ne posodobi (posodabljanje zahteva eksplicitno izvajanje aplikacije z zastavico »--reload«);
  • Učinkovita obdelava omrežnih zahtev prek HTTP v aplikacijah, platforma je zasnovana za ustvarjanje visoko zmogljivih omrežnih aplikacij;
  • Sposobnost ustvarjanja univerzalnih spletnih aplikacij, ki jih je mogoče izvajati tako v Denu kot v običajnem spletnem brskalniku;
  • razpoložljivost standardni nabor modulov, katerih uporaba ne zahteva vezave na zunanje odvisnosti. Moduli iz standardne zbirke so bili podvrženi dodatni reviziji in testiranju združljivosti;
  • Poleg izvajalnega okolja platforma Deno deluje tudi kot upravitelj paketov in omogoča dostop do modulov prek URL-ja znotraj kode. Če želite na primer naložiti modul, lahko v kodi podate »uvoz * kot dnevnik iz »https://deno.land/std/log/mod.ts«. Datoteke, prenesene z zunanjih strežnikov prek URL-ja, so shranjene v predpomnilniku. Vezava na različice modula je določena z navedbo številk različic znotraj URL-ja, na primer »https://unpkg.com/[e-pošta zaščitena]/dist/liltest.js";
  • Struktura vključuje integriran sistem pregledovanja odvisnosti (ukaz »deno info«) in pripomoček za oblikovanje kode (deno fmt);
  • Vse skripte aplikacij je mogoče združiti v eno datoteko JavaScript.

Razlike od Node.js:

  • Deno ne uporablja upravitelja paketov npm
    in ni vezan na repozitorije, moduli so naslovljeni prek URL-ja ali poti do datoteke, sami moduli pa se lahko postavijo na katero koli spletno mesto;
  • Deno ne uporablja "package.json" za definiranje modulov;
  • API razlika, vsa asinhrona dejanja v Denu vrnejo obljubo;
  • Deno zahteva eksplicitno opredelitev vseh potrebnih dovoljenj za datoteke, omrežne in okoljske spremenljivke;
  • Vse napake, ki niso zagotovljene z obdelovalci, vodijo do prekinitve aplikacije;
  • Deno uporablja sistem modulov ECMAScript in ne podpira require();
  • Vgrajeni strežnik HTTP Deno je napisan v TypeScriptu in deluje na izvornih vtičnicah TCP, medtem ko je strežnik HTTP Node.js napisan v C in zagotavlja vezave za JavaScript. Razvijalci družbe Deno so se osredotočili na optimizacijo celotne plasti vtičnic TCP in zagotavljanje bolj splošnega vmesnika. Deno HTTP Server zagotavlja nižjo prepustnost, vendar zagotavlja predvidljivo nizko zakasnitev. Na primer, v testu je preprosta aplikacija, ki temelji na strežniku Deno HTTP, lahko obdelala 25 tisoč zahtev na sekundo z največjo zakasnitvijo 1.3 milisekunde. V Node.js je podobna aplikacija obdelala 34 tisoč zahtevkov na sekundo, vendar so se zakasnitve gibale med 2 in 300 milisekundami.
  • Deno ni združljiv s paketi za Node.js (NPM), ampak se razvija ločeno vmesni sloj zaradi združljivosti s standardno knjižnico Node.js bo z razvojem vedno več aplikacij, napisanih za Node.js, lahko delovalo v Denu.
  • Vir: opennet.ru

Dodaj komentar