Autor Node.js predstavio je sigurnu JavaScript platformu Deno 1.0

Nakon dvije godine razvoja predstavljen prvo veliko izdanje Daj mi 1.0, platforma za samostalno izvršavanje aplikacija u JavaScript-u i TypeScript-u, koja se može koristiti za kreiranje rukovalaca koji rade na serveru. Platformu je razvio Ryan Dahl (Ryan Dahl), kreator Node.js. Kao i Node.js, Deno koristi JavaScript motor V8, koji se takođe koristi u pretraživačima zasnovanim na Chromiumu. Istovremeno, Deno nije fork Node.js-a, već je novi projekat kreiran od nule. Šifra projekta distribuira pod MIT licencom. skupštine pripremljeno za Linux, Windows i macOS.

Značajan broj verzije povezan je sa stabilizacijom API-ja u Deno imenskom prostoru, koji su odgovorni za interakciju aplikacija sa OS-om. Softverski interfejsi koji su do sada nije stabilizovano, su skriveni prema zadanim postavkama i dostupni samo kada se rade u “--nestabilnom” načinu rada. Kako se nove verzije formiraju, takvi API-ji će postepeno postati stabilni. API u globalnom imenskom prostoru, koji uključuje uobičajene funkcije kao što su setTimeout() i fetch(), je što je moguće bliži API-ju konvencionalnih web pretraživača i razvijen je u skladu sa Web standardima za pretraživače. API-ji koje obezbeđuje Rust, koji se koriste direktno u kodu platforme, kao i interfejs za razvoj dodataka za Deno runtime, još uvek nisu stabilizovani i nastavljaju da se razvijaju.

Ključni motivi za kreiranje nove JavaScript platforme bili su želja da se eliminišu konceptualne greške, priznao u arhitekturi Node.js, i pružiti korisnicima sigurnije okruženje. Da bi se poboljšala sigurnost, V8 motor je napisan u Rust-u, koji izbjegava mnoge ranjivosti koje proizlaze iz manipulacije memorijom na niskom nivou, kao što su pristup nakon slobodnog pristupa, nulta dereferenciranja pokazivača i prekoračenje bafera. Platforma se koristi za obradu zahtjeva u neblokirajućem načinu Tokio, također napisan na Rust. Tokio vam omogućava da kreirate aplikacije visokih performansi zasnovane na arhitekturi vođenoj događajima, podržavajući višenitnu obradu i obradu mrežnih zahteva u asinhronom režimu.

Glavni Značajke Deno:

  • Sigurnosno orijentirana zadana konfiguracija. Pristup datotekama, umrežavanje i pristup varijablama okruženja onemogućeni su po defaultu i moraju biti eksplicitno omogućeni. Aplikacije se prema zadanim postavkama pokreću u izolovanom sandbox okruženju i ne mogu pristupiti sistemskim mogućnostima bez davanja eksplicitnih dozvola;
  • Ugrađena podrška za TypeScript izvan JavaScripta. Standardni TypeScript kompajler se koristi za provjeru tipova i generiranje JavaScripta, što dovodi do pogotka performansi u poređenju sa JavaScript raščlanjivanjem u V8. U budućnosti planiramo da pripremimo sopstvenu implementaciju TypeScript sistema za proveru tipa, koji će poboljšati performanse obrade TypeScript za red veličine;
  • Runtime dolazi u obliku jedne samostalne izvršne datoteke (“deno”). Dovoljno je pokrenuti aplikacije koristeći Deno preuzimanje za njegovu platformu postoji jedan izvršni fajl, veličine oko 20 MB, koji nema eksterne zavisnosti i ne zahteva nikakvu posebnu instalaciju na sistemu. Štoviše, deno nije monolitna aplikacija, već je zbirka sanduka paketa u Rustu (deno_core, rusty_v8), koji se može koristiti zasebno;
  • Prilikom pokretanja programa, kao i za učitavanje modula, možete koristiti URL adresiranje. Na primjer, da biste pokrenuli program welcome.js, možete koristiti naredbu “deno https://deno.land/std/examples/welcome.js”. Kôd sa eksternih resursa se preuzima i kešira na lokalnom sistemu, ali se nikada ne ažurira automatski (ažuriranje zahteva eksplicitno pokretanje aplikacije sa zastavicom “--reload”);
  • Efikasna obrada mrežnih zahtjeva putem HTTP-a u aplikacijama, platforma je dizajnirana za kreiranje mrežnih aplikacija visokih performansi;
  • Mogućnost kreiranja univerzalnih web aplikacija koje se mogu izvršavati iu Deno-u iu običnom web pretraživaču;
  • dostupnost standardni set modula, čija upotreba ne zahtijeva vezivanje za vanjske ovisnosti. Moduli iz standardne kolekcije su prošli dodatnu reviziju i testiranje kompatibilnosti;
  • Pored vremena izvođenja, Deno platforma djeluje i kao menadžer paketa i omogućava vam pristup modulima putem URL-a unutar koda. Na primjer, da biste učitali modul, možete navesti u kodu “import * as log from “https://deno.land/std/log/mod.ts”. Datoteke preuzete sa eksternih servera putem URL-a se keširaju. Vezanje za verzije modula određuje se navođenjem brojeva verzija unutar URL-a, na primjer, “https://unpkg.com/[email zaštićen]/dist/liltest.js";
  • Struktura uključuje integrisani sistem inspekcije zavisnosti (komanda “deno info”) i pomoćni program za formatiranje koda (deno fmt);
  • Sve aplikacijske skripte mogu se kombinovati u jednu JavaScript datoteku.

Razlike od Node.js:

  • Deno ne koristi npm menadžer paketa
    i nije vezan za spremišta, moduli se adresiraju preko URL-a ili putem putanje datoteke, a sami moduli se mogu postaviti na bilo koju web stranicu;
  • Deno ne koristi "package.json" za definiranje modula;
  • API razlika, sve asinhrone akcije u Deno vraćaju obećanje;
  • Deno zahtijeva eksplicitnu definiciju svih potrebnih dozvola za datoteke, mreže i varijable okruženja;
  • Sve greške koje nisu dostavljene rukovaocima dovode do gašenja aplikacije;
  • Deno koristi sistem modula ECMAScript i ne podržava require();
  • Deno-ov ugrađeni HTTP server je napisan u TypeScript-u i radi na vrhu izvornih TCP soketa, dok je Node.js HTTP server napisan u C-u i pruža veze za JavaScript. Deno programeri su se usredsredili na optimizaciju celog sloja TCP socketa i obezbeđivanje opštijeg interfejsa. Deno HTTP server obezbeđuje nižu propusnost, ali garantuje predvidljivo nisko kašnjenje. Na primjer, u testu je jednostavna aplikacija zasnovana na Deno HTTP serveru bila u stanju da obradi 25 hiljada zahtjeva u sekundi sa maksimalnom latencijom od 1.3 milisekundi. U Node.js-u, slična aplikacija je obrađivala 34 hiljade zahteva u sekundi, ali latencije su se kretale od 2 do 300 milisekundi.
  • Deno nije kompatibilan sa paketima za Node.js (NPM), ali se razvija zasebno međusloj za kompatibilnost sa standardnom Node.js bibliotekom, kako se razvija, sve više aplikacija napisanih za Node.js će moći da se pokreće u Deno-u.
  • izvor: opennet.ru

Dodajte komentar