Autor Node.js predstavil zabezpečenú JavaScript platformu Deno 1.0

Po dvoch rokoch vývoja predložené prvé veľké vydanie Daj mi 1.0, platforma na samostatné spúšťanie aplikácií v JavaScripte a TypeScripte, ktorú možno použiť na vytváranie obslužných programov, ktoré bežia na serveri. Platformu vyvinul Ryan Dahl (Ryan Dahl), tvorca Node.js. Podobne ako Node.js, aj Deno používa JavaScript engine V8, ktorý sa používa aj v prehliadačoch založených na prehliadači Chromium. Zároveň Deno nie je fork Node.js, ale je to nový projekt vytvorený od nuly. Kód projektu distribuovaný pod licenciou MIT. Zostavy pripravené pre Linux, Windows a macOS.

Významné číslo verzie je spojené so stabilizáciou API v mennom priestore Deno, ktoré sú zodpovedné za interakciu aplikácií s OS. Softvérové ​​rozhrania, ktoré doteraz nestabilizované, sú v predvolenom nastavení skryté a dostupné iba pri spustení v režime „--unstable“. Ako sa tvoria nové verzie, takéto API sa postupne stanú stabilnými. API v globálnom mennom priestore, ktoré zahŕňa bežné funkcie ako setTimeout() a fetch(), je čo najbližšie k API konvenčných webových prehliadačov a je vyvinuté v súlade s webovými štandardmi pre prehliadače. Rozhrania API poskytované spoločnosťou Rust, ktoré sa používajú priamo v kóde platformy, ako aj rozhranie pre vývoj pluginov pre runtime Deno, zatiaľ nie sú stabilizované a naďalej sa vyvíjajú.

Kľúčovými motívmi pre vytvorenie novej platformy JavaScript bola túžba odstrániť koncepčné chyby, priznal v architektúre Node.js a poskytuje používateľom bezpečnejšie prostredie. Aby sa zlepšila bezpečnosť, motor V8 je napísaný v jazyku Rust, ktorý zabraňuje mnohým zraniteľnostiam, ktoré vznikajú pri manipulácii s pamäťou na nízkej úrovni, ako je napríklad voľný prístup, dereferences nulového ukazovateľa a pretečenie vyrovnávacej pamäte. Platforma sa používa na spracovanie požiadaviek v neblokovanom režime Tokio, tiež napísaný v Rust. Tokio vám umožňuje vytvárať vysokovýkonné aplikácie založené na architektúre riadenej udalosťami, podporujúce multi-threading a spracovanie sieťových požiadaviek v asynchrónnom režime.

Hlavné rysy Deno:

  • Predvolená konfigurácia orientovaná na bezpečnosť. Prístup k súborom, sieť a prístup k premenným prostredia sú predvolene zakázané a musia byť explicitne povolené. Aplikácie sa štandardne spúšťajú v izolovaných prostrediach karantény a nemajú prístup k funkciám systému bez udelenia výslovných povolení;
  • Zabudovaná podpora pre TypeScript nad rámec JavaScriptu. Na kontrolu typov a generovanie JavaScriptu sa používa štandardný kompilátor TypeScript, čo vedie k zníženiu výkonu v porovnaní s analýzou JavaScriptu vo V8. V budúcnosti plánujeme pripraviť vlastnú implementáciu systému kontroly typu TypeScript, ktorá rádovo zlepší výkon spracovania TypeScript;
  • Runtime prichádza vo forme jedného samostatného spustiteľného súboru („deno“). Na spúšťanie aplikácií pomocou Deno to stačí Stiahnuť ▼ pre jej platformu existuje jeden spustiteľný súbor s veľkosťou približne 20 MB, ktorý nemá žiadne externé závislosti a nevyžaduje žiadnu špeciálnu inštaláciu do systému. Okrem toho, deno nie je monolitická aplikácia, ale je to zbierka balíkov prepraviek v Rust (deno_core, rusty_v8), ktoré možno použiť samostatne;
  • Pri spúšťaní programu, ako aj pri načítavaní modulov môžete použiť URL adresu. Napríklad na spustenie programu welcome.js môžete použiť príkaz „deno https://deno.land/std/examples/welcome.js“. Kód z externých zdrojov sa stiahne a uloží do vyrovnávacej pamäte v lokálnom systéme, ale nikdy sa automaticky neaktualizuje (aktualizácia vyžaduje explicitné spustenie aplikácie s príznakom „--reload“);
  • Efektívne spracovanie sieťových požiadaviek cez HTTP v aplikáciách, platforma je určená na vytváranie vysokovýkonných sieťových aplikácií;
  • Schopnosť vytvárať univerzálne webové aplikácie, ktoré je možné spúšťať v Deno aj v bežnom webovom prehliadači;
  • dostupnosť štandardná sada modulov, ktorého použitie si nevyžaduje väzbu na vonkajšie závislosti. Moduly zo štandardnej kolekcie prešli dodatočným auditom a testovaním kompatibility;
  • Platforma Deno funguje okrem runtime aj ako správca balíkov a umožňuje vám pristupovať k modulom podľa URL v kóde. Napríklad na načítanie modulu môžete zadať v kóde „import * ako denník z „https://deno.land/std/log/mod.ts“. Súbory stiahnuté z externých serverov cez URL sa ukladajú do vyrovnávacej pamäte. Väzba na verzie modulov je určená uvedením čísel verzií vnútri adresy URL, napríklad „https://unpkg.com/[chránené e-mailom]/dist/liltest.js";
  • Štruktúra zahŕňa integrovaný systém kontroly závislostí (príkaz „deno info“) a nástroj na formátovanie kódu (deno fmt);
  • Všetky aplikačné skripty je možné spojiť do jedného súboru JavaScript.

Rozdiely od Node.js:

  • Deno nepoužíva správcu balíkov npm
    a nie je viazaný na repozitáre, moduly sú adresované prostredníctvom URL alebo cestou k súboru a samotné moduly môžu byť umiestnené na ľubovoľnej webovej stránke;
  • Deno nepoužíva "package.json" na definovanie modulov;
  • Rozdiel medzi API, všetky asynchrónne akcie v Deno vracajú prísľub;
  • Deno vyžaduje explicitnú definíciu všetkých potrebných oprávnení pre súbory, sieť a premenné prostredia;
  • Všetky chyby, ktoré nie sú poskytnuté obsluhou, vedú k ukončeniu aplikácie;
  • Deno používa modulový systém ECMAScript a nepodporuje require();
  • Vstavaný HTTP server Deno je napísaný v TypeScript a beží na natívnych TCP socketoch, zatiaľ čo Node.js HTTP server je napísaný v C a poskytuje väzby pre JavaScript. Vývojári spoločnosti Deno sa zamerali na optimalizáciu celej vrstvy soketov TCP a poskytnutie všeobecnejšieho rozhrania. Deno HTTP Server poskytuje nižšiu priepustnosť, ale zaručuje predvídateľnú nízku latenciu. Napríklad v teste jednoduchá aplikácia založená na Deno HTTP serveri dokázala spracovať 25 tisíc požiadaviek za sekundu s maximálnou latenciou 1.3 milisekúnd. V Node.js podobná aplikácia spracovala 34 tisíc požiadaviek za sekundu, no latencie sa pohybovali od 2 do 300 milisekúnd.
  • Deno nie je kompatibilné s balíkmi pre Node.js (NPM), ale vyvíja sa samostatne medzivrstva kvôli kompatibilite so štandardnou knižnicou Node.js, ktorá sa vyvíja, bude môcť v Deno bežať stále viac aplikácií napísaných pre Node.js.
  • Zdroj: opennet.ru

Pridať komentár