Autor Node.js predstavio je sigurnu JavaScript platformu Deno 1.0

Nakon dvije godine razvoja predstavio prvo veće izdanje Daj mi 1.0, platforma za samostalno izvršavanje aplikacija u JavaScriptu i TypeScriptu, koja se može koristiti za stvaranje rukovatelja koji se pokreću na poslužitelju. Platformu je razvio Ryan Dahl (Ryan Dahl), tvorac Node.js. Kao i Node.js, Deno koristi JavaScript mehanizam V8, koji se također koristi u preglednicima temeljenim na Chromiumu. U isto vrijeme, Deno nije fork Node.js, već je novi projekt stvoren od nule. Šifra projekta distribuira pod licencom MIT-a. skupštine pripremljeni za Linux, Windows i macOS.

Značajan broj verzije povezan je sa stabilizacijom API-ja u imenskom prostoru Deno, koji su odgovorni za interakciju aplikacija s OS-om. Programska sučelja koja su do sada nije stabiliziran, skriveni su prema zadanim postavkama i dostupni samo kada rade u "--nestabilnom" načinu rada. Kako se budu formirale nove verzije, takvi će API-ji postupno postati stabilni. API u globalnom imenskom prostoru, koji uključuje uobičajene funkcije kao što su setTimeout() i fetch(), je što bliži API-ju konvencionalnih web preglednika i razvijen je u skladu s web standardima za preglednike. API-ji koje pruža Rust, a koji se izravno koriste u kodu platforme, kao i sučelje za razvoj dodataka za Deno runtime, još nisu stabilizirani i nastavljaju se razvijati.

Ključni motivi za stvaranje nove JavaScript platforme bili su želja za uklanjanjem konceptualnih grešaka, priznao u Node.js arhitekturi i korisnicima pružiti sigurnije okruženje. Kako bi se poboljšala sigurnost, motor V8 napisan je u Rustu, koji izbjegava mnoge ranjivosti koje proizlaze iz manipulacije memorijom niske razine, kao što je pristup nakon oslobađanja, dereferenciranje nultog pokazivača i prekoračenja međuspremnika. Platforma se koristi za obradu zahtjeva u načinu rada bez blokiranja Tokijo, također napisano u Rustu. Tokio vam omogućuje stvaranje visokoučinkovitih aplikacija temeljenih na arhitekturi vođenoj događajima, podržavajući multi-threading i obradu mrežnih zahtjeva u asinkronom načinu rada.

Glavni značajke Deno:

  • Zadana konfiguracija orijentirana na sigurnost. Pristup datotekama, umrežavanje i pristup varijablama okoline onemogućeni su prema zadanim postavkama i moraju biti izričito omogućeni. Aplikacije se prema zadanim postavkama izvode u izoliranim sandbox okruženjima i ne mogu pristupiti mogućnostima sustava bez davanja eksplicitnih dozvola;
  • Ugrađena podrška za TypeScript izvan JavaScripta. Standardni TypeScript kompilator koristi se za provjeru tipova i generiranje JavaScripta, što dovodi do poboljšanja performansi u usporedbi s JavaScript raščlanjivanjem u V8. U budućnosti planiramo pripremiti vlastitu implementaciju sustava za provjeru tipa TypeScript, koji će poboljšati performanse obrade TypeScripta za red veličine;
  • Runtime dolazi u obliku jedne samostalne izvršne datoteke ("deno"). Dovoljno je za pokretanje aplikacija koristeći Deno preuzimanje za svoju platformu postoji jedna izvršna datoteka, veličine oko 20 MB, koja nema vanjskih ovisnosti i ne zahtijeva nikakvu posebnu instalaciju na sustav. Štoviše, deno nije monolitna aplikacija, već je zbirka paketa sanduka u Rustu (deno_core, rusty_v8), koji se mogu koristiti zasebno;
  • Prilikom pokretanja programa, kao i za učitavanje modula, možete koristiti URL adresiranje. Na primjer, za pokretanje programa welcome.js možete koristiti naredbu “deno https://deno.land/std/examples/welcome.js”. Kod iz vanjskih resursa se preuzima i pohranjuje u predmemoriju na lokalnom sustavu, ali se nikada ne ažurira automatski (ažuriranje zahtijeva eksplicitno pokretanje aplikacije s oznakom “--reload”);
  • Učinkovita obrada mrežnih zahtjeva putem HTTP-a u aplikacijama, platforma je dizajnirana za izradu mrežnih aplikacija visokih performansi;
  • Sposobnost stvaranja univerzalnih web aplikacija koje se mogu izvršavati i u Denou i u običnom web pregledniku;
  • Dostupnost standardni set modula, čija upotreba ne zahtijeva vezanje na vanjske ovisnosti. Moduli iz standardne kolekcije prošli su dodatnu reviziju i testiranje kompatibilnosti;
  • Osim vremena izvođenja, platforma Deno također djeluje kao upravitelj paketa i omogućuje vam pristup modulima putem URL-a unutar koda. Na primjer, za učitavanje modula možete navesti u kodu “uvezi * kao dnevnik iz “https://deno.land/std/log/mod.ts”. Datoteke preuzete s vanjskih poslužitelja putem URL-a pohranjuju se u predmemoriju. Vezanje na verzije modula određuje se navođenjem brojeva verzija unutar URL-a, na primjer, “https://unpkg.com/[e-pošta zaštićena]/dist/liltest.js";
  • Struktura uključuje integrirani sustav inspekcije zavisnosti (naredba “deno info”) i uslužni program za formatiranje koda (deno fmt);
  • Sve skripte aplikacije mogu se kombinirati u jednu JavaScript datoteku.

Razlike od Node.js:

  • Deno ne koristi npm upravitelj paketa
    i nije vezan za repozitorije, modulima se pristupa putem URL-a ili putem datoteke, a sami moduli mogu se postaviti na bilo koje web mjesto;
  • Deno ne koristi "package.json" za definiranje modula;
  • API razlika, sve asinkrone radnje u Denu vraćaju obećanje;
  • Deno zahtijeva eksplicitnu definiciju svih potrebnih dozvola za datoteke, mrežne i varijable okruženja;
  • Sve pogreške koje nisu opremljene rukovateljima dovode do prekida aplikacije;
  • Deno koristi sustav modula ECMAScript i ne podržava require();
  • Deno-ov ugrađeni HTTP poslužitelj napisan je u TypeScriptu i radi na izvornim TCP utičnicama, dok je Node.js HTTP poslužitelj napisan u C-u i pruža vezivanje za JavaScript. Programeri tvrtke Deno usredotočili su se na optimizaciju cijelog sloja TCP utičnica i pružanje općenitijeg sučelja. Deno HTTP poslužitelj pruža manju propusnost, ali jamči predvidljivu nisku latenciju. Primjerice, u testu je jednostavna aplikacija temeljena na Deno HTTP poslužitelju uspjela obraditi 25 tisuća zahtjeva u sekundi s maksimalnom latencijom od 1.3 milisekunde. U Node.js je slična aplikacija obradila 34 tisuće zahtjeva u sekundi, ali su se latencije kretale od 2 do 300 milisekundi.
  • Deno nije kompatibilan s paketima za Node.js (NPM), već se razvija zasebno međusloj radi kompatibilnosti sa standardnom bibliotekom Node.js, kako se bude razvijala, sve više aplikacija napisanih za Node.js moći će se izvoditi u Denu.
  • Izvor: opennet.ru

Dodajte komentar