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

Po dvoch rokoch vývoja predstavené prvý významný vydanie Deno 1.0, platforma pre izolované spúšťanie aplikácií napísaných v JavaScripte a TypeScripte, ktorá môže byť využitá na vytváranie serverových spracovateľov. Platformu vyvíja Ryan Dahl (Ryan Dahl), tvorca Node.js. Tak ako v Node.js, Deno používa JavaScriptový engine V8, ktorý sa taktiež používa v prehliadačoch založených na Chromiu. Deno však nie je odnožou Node.js, ale predstavuje úplne nový projekt vytvorený od základov. Kód projektu distribuovaný je pod licenciou MIT. Sestavy sú pripravené pre Linux, Windows a macOS.

Dôležité číslo verzie súvisí so stabilizáciou API v mennom priestore Deno, ktorý zodpovedá za interakciu aplikácií s OS. Programové rozhrania, ktoré zatiaľ nie sú stabilizované, sú predvolene skryté a sú dostupné iba pri spustení v režime „—unstable“. Postupne, s tvorbou nových verzií, budú takéto API presúvané do stabilného stavu. API v globálnom mennom priestore, ktoré zahŕňa také bežné funkcie ako setTimeout() a fetch(), je čo najviac priblížené k API bežných webových prehliadačov a vyvíja sa v súlade so štandardmi prehlížačov. Poskytované Rust API, ktoré sa priamo používa v kóde platformy, ako aj rozhranie pre vývoj pluginov pre Deno runtime, zatiaľ nie sú stabilizované a pokračujú vo vývoji.

Kľúčovými motívmi vytvorenia novej JavaScriptovej platformy bolo odstránenie konceptuálnych chýb, ktoré boli dovolené v architektúre Node.js a poskytnúť používateľom bezpečnejšie prostredie. Pre zvýšenie bezpečnosti je obal okolo engine V8 napísaný v jazyku Rust, ktorý umožňuje vyhnúť sa mnohým zraniteľnostiam vznikajúcim z nízkoúrovňovej práce s pamäťou, ako je prístup k pamäťovej oblasti po jej uvoľnení, dereferencovanie nulových ukazovateľov a prekročenie medzier v pamäti. Na spracovanie požiadaviek v neblokujúcom režime sa používa platformaTokio

Hlavné , taktiež napísaná v jazyku Rust. Tokio umožňuje vytvárať vysoko výkonné aplikácie na báze eventovo orientovanej architektúry (Event-driven), podporujúce multithreading a spracovanie sieťových požiadaviek v asynchrónnom režime. vlastnosti

  • Orientácia na bezpečnosť v predvolenej konfigurácii. Prístup k súborom, sieťovým funkciám a k premenným prostredia je predvolene zablokovaný a vyžaduje explicitné povolenie. Aplikácie sa predvolene spúšťajú v izolovaných sandboxových prostrediach a nemôžu získať prístup k systémovým funkciám bez poskytnutia explicitných oprávnení;
  • Integrovaná podpora jazyka TypeScript vedľa JavaScriptu. Na kontrolu typov a generáciu JavaScriptu sa využíva štandardný kompilátor TypeScript, čo spôsobuje pokles výkonu v porovnaní s analýzou JavaScriptu v V8. V budúcnosti sa plánuje pripraviť vlastná implementácia systému kontroly typov TypeScript, ktorá výrazne zvýši výkon spracovania TypeScript;
  • Runtime je dodávaný vo forme jedného samostatného spustiteľného súboru („deno“). Na spustenie aplikácií pomocou Deno stačí stiahnuť pre svoju platformu jeden spustiteľný súbor s veľkosťou okolo 20 MB, ktorý nemá vonkajšie závislosti a nevyžaduje žiadnu špeciálnu inštaláciu do systému. Pri tom deno nie je monolitná aplikácia, ale predstavuje kolekciu crate balíkov na Rust (deno_core, rusty_v8), ktoré môžu byť používané samostatne;
  • Pri spúšťaní programu, ako aj na sťahovanie modulov je možné použiť adresovanie cez URL. Napríklad pre 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 sťahuje a uklada na lokálnom systéme, ale nikdy sa automaticky neaktualizuje (na aktualizáciu je potrebné explicitne spustiť aplikáciu s prepínačom „—reload“);
  • Efektívne spracovanie sieťových požiadaviek cez HTTP, platforma je určená na vytváranie vysokovýkonných sieťových aplikácií;
  • Možnosť vytvárania univerzálnych webových aplikácií, ktoré môžu fungovať ako v Deno, tak aj v bežnom webovom prehliadači;
  • Prítomnosť štandardného súboru modulov, ktorých použitie nevyžaduje viazanie na vonkajšie závislosti. Moduly zo štandardnej zbierky prešli dodatočným auditom a kontrolou kompatibility;
  • Okrem runtime platforma Deno tiež plní úlohu správcu balíkov a umožňuje v kóde odkazovať na moduly cez URL. Napríklad, na stiahnutie modulu môže byť v kóde uvedené „import * as log from "https://deno.land/std/log/mod.ts". Súbory stiahnuté z externých serverov cez URL sa cachujú. Pripúšťanie k verziám modulov je určené prostredníctvom uvedenia čísel verzií v URL, napríklad „https://unpkg.com/liltest@0.0.5/dist/liltest.js“;
  • Do systému je integrovaný systém inšpekcie závislostí (príkaz 'deno info') a nástroj na formátovanie kódu (deno fmt);
  • Všetky skripty aplikácie môžu byť združené do jedného súboru JavaScript.

Rozdiely od Node.js:

  • Deno nepoužíva správcu balíkov npm
    a nezviazuje sa na repozitáre, adresovanie modulov sa realizuje cez URL alebo podľa súborového umiestnenia a samotné moduly môžu byť umiestnené na akejkoľvek webovej stránke;
  • V Deno sa nepoužíva „package.json“ na definovanie modulov;
  • Rozdiel API, všetky asynchrónne akcie v Deno vracajú promise;
  • Deno vyžaduje explicitné definovanie všetkých potrebných oprávnení pre súbory, sieť a premenné prostredia;
  • Všetky chyby, ktoré nie sú vybavené spracovateľmi, vedú k ukončeniu vykonávania aplikácie;
  • V Deno sa používa systém modulov ECMAScript a nepodporuje sa require();
  • Vstavaný HTTP server Deno je napísaný v TypeScript a funguje na natívnych TCP soketoch, zatiaľ čo HTTP server Node.js je napísaný v C a poskytuje väzby pre JavaScript. Vývojári Deno sa zamerali na optimalizáciu celého TCP soketového vrstvy a poskytovanie všeobecnejšieho rozhrania. HTTP server Deno zabezpečuje nižšiu priepustnosť, ale garantuje predvídateľne nízke oneskorenia. 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álnym oneskorením 1,3 milisekundy. V Node.js podobná aplikácia spracovala 34 tisíc požiadaviek za sekundu, ale oneskorenia sa pohybovali od 2 do 300 milisekúnd.
  • Deno nie je kompatibilný s balíkmi pre Node.js (NPM), ale vyvíja sa samostatne. vrstva pre kompatibilitu so štandardnou knižnicou Node.js, pričom s rozvojom Deno sa v ňom bude môcť spúšťať čoraz viac aplikácií napísaných pre Node.js.
  • Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster