Autor Node.js predstavio sigurnu JavaScript platformu Deno 1.0

Nakon dvije godine razvoja predstavljen prvo značajno izdanje Deno 1.0, platforme za odvojeno izvršavanje aplikacija na jezicima JavaScript i TypeScript, koja se može koristiti za izradu poslužiteljskih rukovalaca. Platformu razvija Ryan Dahl (Ryan Dahl), tvorac Node.js. Kao i u Node.js, Deno koristi JavaScript engine V8, koji se također primjenjuje u preglednicima temeljenim na Chromiumu. Međutim, Deno nije odvojak od Node.js, već predstavlja potpuno novi projekt stvoren od nule. Kod projekta distribuira se pod MIT licencom. Izgradnje pripremljeni za Linux, Windows i macOS.

Značajan broj verzije povezan je sa stabilizacijom API-ja u imenskom prostoru Deno, koji odgovaraju za interakciju aplikacija s OS-om. Programski interfejsi koji još nisu stabilizirani, po defaultu su skrivene i dostupne samo kada se pokreću u režimu "—unstable". Kako se nove verzije formiraju, slični API-ja postupno će se prebacivati u kategoriju stabilnih. API u globalnom imenskom prostoru, koji uključuje funkcije poput setTimeout() i fetch(), koliko je to moguće, približava se API-ju običnih web pregledača i razvija se u skladu s web standardima za preglednike. Pruženi Rust API, koji se izravno koristi u kodu platforme, kao i interfejs za razvoj dodataka za Deno runtime, još nisu stabilizirani i nastavljaju se razvijati.

Ključni motivi za stvaranje nove JavaScript platforme bili su želja da se isprave konceptualne greške, napravljene u arhitekturi Node.js i pružiti korisnicima sigurnije okruženje. Za povećanje sigurnosti omotač oko V8 enginea napisan je na jeziku Rust, što omogućava izbjegavanje mnogih ranjivosti koje nastaju iz niskonivovnog rada s memorijom, kao što su pristupanje memorijskom prostoru nakon što je oslobođen, dereferenciranje null pokazivača i odlasci izvan granica bafera. Za obradu zahtjeva u neblokirajućem režimu koristi se platforma Tokio, također napisana na jeziku Rust. Tokio omogućava izradu visoko performansnih aplikacija temeljenih na arhitekturi orijentiranoj na događaje (Event-driven), koje podržavaju višedretvenost i obradu mrežnih zahtjeva u asinkronom režimu.

Glavne karakteristike Deno:

  • Usmjerenost na sigurnost u zadanoj konfiguraciji. Pristupi datotekama, mrežne mogućnosti i pristup varijablama okruženja po zadanom su blokirani i zahtijevaju izričito uključivanje. Aplikacije po zadanoj postavci pokreću se u izoliranim sandbox okruženjima i ne mogu pristupiti sistemskim mogućnostima bez odobrenja;
  • Ugrađena podrška za TypeScript uz JavaScript. Za provjeru tipova i generiranje JavaScripta koristi se ugrađeni TypeScript kompajler, što rezultira smanjenjem performansi u usporedbi s analizom JavaScripta u V8. U budućnosti planira se razviti vlastita implementacija sustava provjere tipova za TypeScript, koja će značajno povećati učinkovitost obrade TypeScripta;
  • Runtime dolazi u obliku jedne samodostatne izvršne datoteke ('deno'). Za pokretanje aplikacija koristeći Deno dovoljno je preuzeti za svoju platformu jedan izvršni datoteka, veličine oko 20 MB, bez vanjskih ovisnosti i koja ne zahtijeva posebnu instalaciju u sustavu. Deno, međutim, nije monolitna aplikacija, već predstavlja kolekciju crate paketa na Rustu (deno_core, rusty_v8), koje se mogu koristiti pojedinačno;
  • Prilikom pokretanja programa, kao i za učitavanje modula, mogu se koristiti adrese putem URL-a. Na primjer, za pokretanje programa welcome.js može se koristiti naredba 'deno https://deno.land/std/examples/welcome.js'. Kod s vanjskih resursa učitava se i kešira na lokalnom sustavu, ali se nikada automatski ne ažurira (za ažuriranje je potrebno izričito pokrenuti aplikaciju s zastavicom '--reload');
  • Učinkovita obrada mrešnih zahtjeva putem HTTP-a, platforma je osmišljena za stvaranje visoko performantnih mrežnih aplikacija;
  • Mogućnost izrade univerzalnih web aplikacija koje se mogu izvesti kako u Denu, tako i u običnom web pregledniku;
  • Prisutnost standardnog skupa modula, čija upotreba ne zahtijeva vezivanje za vanjske ovisnosti. Moduli iz standardne kolekcije prošli su dodatnu reviziju i provjeru kompatibilnosti;
  • Osim runtime, Deno također djeluje kao upravitelj paketa i omogućava korištenje modula putem URL-a unutar koda. Na primjer, za učitavanje modula možete u kodu navesti „import * as log from «https://deno.land/std/log/mod.ts». Datoteke učitane s vanjskih poslužitelja putem URL-a se keširaju. Verzioniranje modula određuje se navođenjem brojeva verzija unutar URL-a, na primjer, «https://unpkg.com/liltest@0.0.5/dist/liltest.js»;
  • U sustav je integriran alat za inspekciju ovisnosti (komanda „deno info”) i alat za formatiranje koda (deno fmt);
  • Sve skripte aplikacije mogu se spojiti u jednu JavaScript datoteku.

Razlike u odnosu na Node.js:

  • Deno ne koristi upravitelj paketa npm
    i ne oslanja se na repozitorije, adrese modula određuju se putem URL-a ili preko datotečnih putanja, a moduli se mogu nalaziti na bilo kojoj stranici;
  • U Denu se ne koristi „package.json” za definiranje modula;
  • Razlika u API-ju, sve asinkrone radnje u Denu vraćaju promise;
  • Deno zahtijeva eksplicitno definiranje svih potrebnih ovlasti za datoteke, mrežu i varijable okruženja;
  • Sve pogreške bez handlera dovode do prekida izvršavanja aplikacije;
  • U Denu se koristi ECMAScript sustav modula i ne podržava require();
  • Ugrađeni HTTP poslužitelj Deno napisan je u TypeScript-u i radi iznad nativnih TCP soketa, dok je HTTP poslužitelj Node.js napisan u C-u i pruža veze za JavaScript. Razvijači Deno-a usredotočili su se na optimizaciju cijelog sloja TCP soketa i pružanje općenitog sučelja. HTTP poslužitelj Deno osigurava manju propusnost, ali jamči predvidljive niske kašnjenja. Na primjer, u testu, jednostavna aplikacija temeljena na Deno HTTP poslužitelju uspjela je obraditi 25 tisuća zahtjeva u sekundi s maksimalnim kašnjenjem od 1.3 milisekunde. U Node.js, slična aplikacija obradila je 34 tisuće zahtjeva u sekundi, ali su kašnjenja varirala od 2 do 300 milisekundi.
  • Deno nije kompatibilan s paketima za Node.js (NPM), ali se posebno razvija sloj za kompatibilnost sa standardnom bibliotekom Node.js, kako bi s vremenom Deno mogao pokretati sve više aplikacija napisanih za Node.js.
  • Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster