Autorul Node.js a prezentat platforma JavaScript Deno 1.0, protejată

După doi ani de dezvoltare la sfârșitul anului 2019. Pe lângă protocoalele ActivityPub și diaspora, Hubzilla se federează în cadrul rețelei prin propriul său protocol prima lansare semnificativă Deno 1.0, platformă pentru execuția izolată a aplicațiilor în limbajele JavaScript și TypeScript, care poate fi utilizată pentru a crea gestionatori care funcționează pe server. Platforma este dezvoltată de Ryan Dahl (Ryan Dahl), creatorul Node.js. La fel ca în Node.js, Deno utilizează motorul JavaScript V8, care este, de asemenea, folosit în browserele bazate pe Chromium. Totuși, Deno nu este o ramificație din Node.js, ci reprezintă un proiect nou creat de la zero. Codul proiectului se răspândește este sub licența MIT. Versiunile sunt pregătite pentru Linux, Windows și macOS.

Numărul semnificativ al versiunii este legat de stabilizarea API-ului în spațiul de nume Deno, care se ocupă de interacțiunea aplicațiilor cu sistemul de operare. Interfețele programatice, care deocamdată nu sunt stabilizate, sunt în mod implicit ascunse și sunt accesibile doar când sunt lansate în modul „--unstable”. Pe măsură ce noi versiuni sunt create, aceste API-uri vor fi treptat mutate la statusul de stabile. API-urile din spațiul de nume global, care includ funcții comune precum setTimeout() și fetch(), sunt, pe cât posibil, apropiate de API-urile browserelor web obișnuite și se dezvoltă conform standardelor Web pentru browsere. API-urile furnizate de Rust, care sunt utilizate direct în codul platformei, precum și interfața pentru dezvoltarea pluginurilor pentru Deno runtime, nu sunt încă stabilizate și continuă să se dezvolte.

Motivul principal pentru crearea unei noi platforme JavaScript a fost dorința de a corecta erorile conceptuale comise în arhitectura Node.js și de a oferi utilizatorilor un mediu mai sigur. Pentru a crește securitatea, învăluirea în jurul motorului V8 este scrisă în limbajul Rust, care ajută la evitarea multor vulnerabilități ce apar din cauza manipulării de nivel jos a memoriei, cum ar fi accesarea diferitelor zone de memorie după ce acestea au fost eliberate, dereferentierea pointerilor nuli și depășirea limitelor bufferelor. Pentru a gestiona solicitările într-un mod non-blocant, se folosește o platformă Tokio, de asemenea, scrisă în limbajul Rust. Tokio permite crearea de aplicații de înaltă performanță bazate pe arhitectura orientată pe evenimente (Event-driven), care suportă multi-threading și procesarea solicitărilor de rețea în mod asincron.

Principalele grafica realizată prin WebGL și Deno:

  • Orientare asupra securității în configurația implicită. Accesările la fișiere, capacitățile de rețea și accesul la variabilele de mediu sunt blocate în mod implicit și necesită activare explicită. Aplicațiile sunt lansate în mod implicit în medii de izolare (sandbox) și nu pot accesa capacitățile sistemului fără a se oferi permisiuni explicite;
  • Support integrat pentru limbajul TypeScript pe lângă JavaScript. Verificarea tipurilor și generarea de JavaScript folosesc compilatorul TypeScript standard, ceea ce duce la o scădere a performanței în comparație cu interpretarea JavaScript în V8. În viitor, se preconizează pregătirea unei implementări proprii a sistemului de verificare a tipurilor TypeScript, ceea ce va permite creșterea semnificativă a performanței procesării TypeScript;
  • Runtime-ul vine sub forma unui singur fișier executabil complet („deno”). Pentru a rula aplicații folosind Deno, este suficient descărcată pentru platforma sa un fișier executabil, de aproximativ 20 MB, fără dependențe externe și care nu necesită o instalare specială în sistem. În plus, deno nu este o aplicație monolitică, ci o colecție de pachete crate în Rust (deno_core, rusty_v8), care pot fi utilizate separat;
  • Pentru a lansa programe, precum și pentru a încărca module, se poate utiliza adresarea prin URL. De exemplu, pentru a lansa programul welcome.js, se poate folosi comanda „deno https://deno.land/std/examples/welcome.js”. Codul de pe resurse externe este descărcat și stocat în sistemul local, dar nu este niciodată actualizat automat (pentru actualizare este necesară rularea explicită a aplicației cu flagul „—reload”);
  • Procesarea eficientă a cererilor de rețea HTTP, platforma fiind concepută pentru construirea de aplicații de rețea de înaltă performanță;
  • Posibilitatea de a crea aplicații web universale care pot rula atât în Deno, cât și în browsere web obișnuite;
  • Prezența setul standard de module, utilizarea cărora nu necesită legătura cu dependențe externe. Modulele din colecția standard au trecut printr-un audit suplimentar și verificări de compatibilitate;
  • Pe lângă runtime, platforma Deno îndeplinește și rolul de manager de pachete și permite accesarea modulelor prin URL în cod. De exemplu, pentru a încărca un modul, se poate specifica în cod „import * as log from "https://deno.land/std/log/mod.ts". Fișierele încărcate de pe servere externe prin URL sunt stocate în cache. Legăturile cu versiunile modulelor sunt stabilite prin indicarea numerelor de versiuni în URL, de exemplu, "https://unpkg.com/liltest@0.0.5/dist/liltest.js";
  • În compunere este integrat un sistem de inspectare a dependențelor (comanda „deno info”) și o unealtă pentru formatat cod (deno fmt);
  • Toate scripturile aplicației pot fi combinate într-un singur fișier JavaScript.

Diferitele de Node.js:

  • Deno nu folosește managerul de pachete npm
    și nu se leagă de depozite; adresarea modulelor se realizează prin URL sau pe cale de fișier, iar modulele în sine pot fi găzduite pe orice site;
  • În Deno nu se utilizează „package.json” pentru definirea modulelor;
  • Diferența API-ului, toate acțiunile asincrone în Deno returnează promisiuni;
  • Deno necesită definirea explicită a tuturor permisiunilor necesare pentru fișiere, rețea și variabile de mediu;
  • Toate erorile care nu au gestionari determină terminarea execuției aplicației;
  • În Deno se folosește sistemul de module ECMAScript și nu se suportă require();
  • Serverul HTTP încorporat Deno este scris în TypeScript și funcționează pe deasupra socket-urilor TCP native, în timp ce serverul HTTP Node.js este scris în C și oferă legături pentru JavaScript. Dezvoltatorii Deno s-au concentrat pe optimizarea întregului strat de socket-uri TCP și oferirea unei interfețe mai generale. Serverul HTTP Deno oferă o capacitate mai mică, dar garantează întârzieri predictibile scăzute. De exemplu, în test, o aplicație simplă bazată pe serverul HTTP Deno a reușit să gestioneze 25 de mii de cereri pe secundă cu o întârziere maximă de 1.3 milisecunde. În Node.js, o aplicație similară a gestionat 34 de mii de cereri pe secundă, dar întârzierile au variat între 2 și 300 de milisecunde.
  • Deno nu este compatibil cu pachetele pentru Node.js (NPM), dar se dezvoltă separat stratul pentru a fi compatibil cu biblioteca standard Node.js, pe măsură ce aceasta se dezvoltă, în Deno vor putea fi rulate tot mai multe aplicații scrise pentru Node.js.
  • Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster