Autorul cărții Node.js a prezentat platforma JavaScript securizată Deno 1.0

După doi ani de dezvoltare prezentat prima lansare majoră Dă-mi 1.0, o platformă pentru execuția de sine stătătoare a aplicațiilor în JavaScript și TypeScript, care poate fi folosită pentru a crea handlere care rulează pe server. Platforma este dezvoltată de Ryan Dahl (Ryan Dahl), creatorul Node.js. La fel ca Node.js, Deno folosește un motor JavaScript V8, care este folosit și în browserele bazate pe Chromium. În același timp, Deno nu este un furk al Node.js, ci este un proiect nou creat de la zero. Cod proiect distribuit de sub licență MIT. Adunări pregătit pentru Linux, Windows și macOS.

Numărul semnificativ de versiune este asociat cu stabilizarea API-urilor din spațiul de nume Deno, care sunt responsabile pentru interacțiunea aplicațiilor cu sistemul de operare. Interfețe software care au până acum nestabilizat, sunt ascunse în mod implicit și sunt disponibile numai atunci când rulează în modul „--unstable”. Pe măsură ce se formează versiuni noi, astfel de API-uri vor deveni treptat stabile. API-ul din spațiul de nume global, care include funcții comune precum setTimeout() și fetch(), este cât mai aproape posibil de API-ul browserelor web convenționale și este dezvoltat în conformitate cu standardele web pentru browsere. API-urile furnizate de Rust, care sunt folosite direct în codul platformei, precum și interfața pentru dezvoltarea plugin-urilor pentru runtime Deno, nu au fost încă stabilizate și continuă să se dezvolte.

Motivele cheie pentru crearea unei noi platforme JavaScript au fost dorința de a elimina erorile conceptuale, admis în arhitectura Node.js și oferă utilizatorilor un mediu mai sigur. Pentru a îmbunătăți securitatea, motorul V8 este scris în Rust, ceea ce evită multe dintre vulnerabilitățile care apar din manipularea memoriei de nivel scăzut, cum ar fi accesul după liber, dereferențele pointerului nul și depășirile de buffer. Platforma este folosită pentru procesarea cererilor în modul neblocant Tokio, scris tot în Rust. Tokio vă permite să creați aplicații de înaltă performanță bazate pe arhitectură bazată pe evenimente, care acceptă multi-threading și procesează cererile de rețea în modul asincron.

Principalul caracteristici Deno:

  • Configurație implicită orientată spre securitate. Accesul la fișiere, conectarea în rețea și accesul la variabilele de mediu sunt dezactivate în mod implicit și trebuie activate în mod explicit. Aplicațiile rulează în mod implicit în medii izolate sandbox și nu pot accesa capabilitățile sistemului fără acordarea de permisiuni explicite;
  • Suport încorporat pentru TypeScript dincolo de JavaScript. Compilatorul standard TypeScript este folosit pentru a verifica tipurile și pentru a genera JavaScript, ceea ce duce la o atingere de performanță în comparație cu analizarea JavaScript în V8. În viitor, intenționăm să pregătim propria noastră implementare a sistemului de verificare a tipului TypeScript, care va îmbunătăți performanța de procesare TypeScript cu un ordin de mărime;
  • Runtime vine sub forma unui singur fișier executabil autonom („deno”). Pentru a rula aplicații folosind Deno este suficient descărcare pentru platforma sa există un fișier executabil, de aproximativ 20 MB, care nu are dependențe externe și nu necesită nicio instalare specială pe sistem. Mai mult, deno nu este o aplicație monolitică, ci este o colecție de pachete de ladă în Rust (deno_core, rusty_v8), care poate fi folosit separat;
  • La pornirea programului, precum și pentru a încărca module, puteți utiliza adresarea URL. De exemplu, pentru a rula programul welcome.js, puteți folosi comanda „deno https://deno.land/std/examples/welcome.js”. Codul din resurse externe este descărcat și stocat în cache pe sistemul local, dar nu este niciodată actualizat automat (actualizarea necesită rularea explicită a aplicației cu indicatorul „--reload”);
  • Procesarea eficientă a solicitărilor de rețea prin HTTP în aplicații; platforma este concepută pentru crearea de aplicații de rețea de înaltă performanță;
  • Abilitatea de a crea aplicații web universale care pot fi executate atât în ​​Deno, cât și într-un browser web obișnuit;
  • disponibilitate set standard de module, a cărui utilizare nu necesită legarea la dependențe externe. Modulele din colecția standard au fost supuse unui audit suplimentar și testări de compatibilitate;
  • Pe lângă timpul de execuție, platforma Deno acționează și ca manager de pachete și vă permite să accesați module prin URL în interiorul codului. De exemplu, pentru a încărca un modul, puteți specifica în cod „import * ca log din „https://deno.land/std/log/mod.ts”. Fișierele descărcate de pe servere externe prin URL sunt stocate în cache. Legarea la versiunile modulelor este determinată prin specificarea numerelor de versiune în interiorul adresei URL, de exemplu, „https://unpkg.com/[e-mail protejat]/dist/liltest.js";
  • Structura include un sistem integrat de inspecție a dependenței (comanda „deno info”) și un utilitar pentru formatarea codului (deno fmt);
  • Toate scripturile aplicației pot fi combinate într-un singur fișier JavaScript.

Diferențele față de Node.js:

  • Deno nu folosește managerul de pachete npm
    și nu este legat de depozite, modulele sunt adresate printr-un URL sau printr-o cale de fișier, iar modulele în sine pot fi plasate pe orice site web;
  • Deno nu folosește „package.json” pentru a defini module;
  • Diferența API, toate acțiunile asincrone din Deno returnează o promisiune;
  • Deno necesită definirea explicită a tuturor permisiunilor necesare pentru fișiere, variabile de rețea și de mediu;
  • Toate erorile care nu sunt furnizate cu handlere duc la terminarea aplicației;
  • Deno folosește sistemul de module ECMAScript și nu acceptă require();
  • Serverul HTTP încorporat al lui Deno este scris în TypeScript și rulează peste socket-urile TCP native, în timp ce serverul HTTP Node.js este scris în C și oferă legături pentru JavaScript. Dezvoltatorii lui Deno s-au concentrat pe optimizarea întregului strat de socket TCP și pe furnizarea unei interfețe mai generale. Deno HTTP Server oferă un debit mai mic, dar garantează o latență scăzută previzibilă. De exemplu, în test, o aplicație simplă bazată pe serverul Deno HTTP a fost capabilă să proceseze 25 de mii de solicitări pe secundă cu o latență maximă de 1.3 milisecunde. În Node.js, o aplicație similară a procesat 34 de mii de solicitări pe secundă, dar latențele au variat între 2 și 300 de milisecunde.
  • Deno nu este compatibil cu pachetele pentru Node.js (NPM), dar este dezvoltat separat strat intermediar pentru compatibilitate cu biblioteca standard Node.js, pe măsură ce se dezvoltă, tot mai multe aplicații scrise pentru Node.js vor putea rula în Deno.
  • Sursa: opennet.ru

Adauga un comentariu