La aŭtoro de Node.js prezentis la sekuran JavaScript-platformon Deno 1.0

Post du jaroj da evoluo prezentita unua grava eldono Donu al mi 1.0, platformo por memstara ekzekuto de aplikoj en JavaScript kaj TypeScript, kiuj povas esti uzitaj por krei prizorgilojn kiuj funkcias sur la servilo. La platformo estas evoluigita fare de Ryan Dahl (Ryan Dahl), kreinto de Node.js. Kiel Node.js, Deno uzas JavaScript-motoron V8, kiu ankaŭ estas uzata en Chromium-bazitaj retumiloj. Samtempe, Deno ne estas forko de Node.js, sed estas nova projekto kreita de nulo. Projekta kodo distribuita de sub MIT-licenco. Asembleoj preparita por Linukso, Vindozo kaj macOS.

La signifa versio numero estas rilata al la stabiligo de la APIoj en la nomspaco Deno, kiuj respondecas pri la interago de aplikoj kun la OS. Programaro interfacoj kiuj havas ĝis nun ne stabiligita, estas kaŝitaj defaŭlte kaj nur disponeblaj kiam funkcias en "--unstable" reĝimo. Dum novaj versioj formiĝas, tiaj API-oj iom post iom stabiliĝos. La API en la tutmonda nomspaco, kiu inkluzivas komunajn funkciojn kiel setTimeout() kaj fetch(), estas kiel eble plej proksima al la API de konvenciaj TTT-legiloj kaj estas evoluigita laŭ TTT-normoj por retumiloj. La API-oj provizitaj de Rust, kiuj estas uzataj rekte en la platformkodo, same kiel la interfaco por disvolvi kromaĵojn por Deno-rultempo, ankoraŭ ne estas stabiligitaj kaj daŭre disvolviĝas.

La ŝlosilaj motivoj por krei novan JavaScript-platformon estis la deziro elimini koncipajn erarojn, konfesis en la arkitekturo Node.js, kaj provizi uzantojn per pli sekura medio. Por plibonigi sekurecon, la V8-motoro estas skribita en Rust, kiu evitas multajn el la vundeblecoj kiuj ekestiĝas de malalt-nivela memormanipulado, kiel ekzemple post-libera aliro, nulmontriloj dereferences, kaj bufrotropasoj. La platformo estas uzata por procesi petojn en ne-bloka reĝimo Tia, ankaŭ verkita en Rust. Tokio permesas krei alt-efikecajn aplikaĵojn bazitajn sur arkitekturo gvidata de evento, subtenante multfadenajn kaj prilaborajn retajn petojn en nesinkrona reĝimo.

Ĉefa Karakterizaĵoj Deno:

  • Sekurec-orientita defaŭlta agordo. Dosieraliro, interkonektado kaj aliro al mediovariabloj estas malebligitaj defaŭlte kaj devas esti eksplicite ebligitaj. Aplikoj defaŭlte funkcias en izolitaj sablokesto-medioj kaj ne povas aliri sistemajn kapablojn sen doni eksplicitajn permesojn;
  • Enkonstruita subteno por TypeScript preter JavaScript. La norma TypeScript-kompililo estas uzata por kontroli tipojn kaj generi JavaScript, kio kondukas al rendimenta sukceso kompare kun JavaScript-analizo en V8. En la estonteco, ni planas prepari nian propran efektivigon de la TypeScript-tipkontrolsistemo, kiu plibonigos TypeScript-pretigan rendimenton per ordo de grandeco;
  • Rultempo venas en la formo de ununura memstara rulebla dosiero ("deno"). Por ruli aplikaĵojn uzante Deno sufiĉas elŝuti por ĝia platformo ekzistas unu rulebla dosiero, ĉirkaŭ 20 MB en grandeco, kiu ne havas eksterajn dependecojn kaj ne postulas specialan instaladon en la sistemo. Krome, deno ne estas monolita aplikaĵo, sed estas kolekto de kestaj pakoj en Rust (deno_core, rusty_v8), kiu povas esti uzata aparte;
  • Komencante la programon, kaj ankaŭ por ŝargi modulojn, vi povas uzi URL-adresadon. Ekzemple, por ruli la programon welcome.js, vi povas uzi la komandon "deno https://deno.land/std/examples/welcome.js". Kodo de eksteraj rimedoj estas elŝutita kaj konservita en la loka sistemo, sed neniam aŭtomate ĝisdatigita (ĝisdatigo postulas eksplicite ruli la aplikaĵon kun la flago "--reload");
  • Efika prilaborado de retpetoj per HTTP en aplikoj; la platformo estas desegnita por krei alt-efikecajn retajn aplikojn;
  • La kapablo krei universalajn TTT-aplikaĵojn, kiuj povas esti ekzekutitaj kaj en Deno kaj en regula TTT-legilo;
  • havebleco norma aro de moduloj, kies uzo ne postulas ligon al eksteraj dependecoj. Moduloj de la norma kolekto spertis kroman revizion kaj kongruectestadon;
  • Krom rultempo, la platformo Deno ankaŭ funkcias kiel pakaĵmanaĝero kaj permesas al vi aliri modulojn per URL ene de la kodo. Ekzemple, por ŝargi modulon, vi povas specifi en la kodo "import * kiel protokolo de "https://deno.land/std/log/mod.ts". Dosieroj elŝutitaj de eksteraj serviloj per URL estas konservitaj en kaŝmemoro. Ligado al modulaj versioj estas determinita per specifado de versinumeroj ene de la URL, ekzemple, "https://unpkg.com/[retpoŝte protektita]/dist/liltest.js";
  • La strukturo inkluzivas integran dependecan inspektadsistemon (la komando "deno info") kaj ilon por kodformatado (deno fmt);
  • Ĉiuj aplikaj skriptoj povas esti kombinitaj en unu JavaScript-dosieron.

Diferencoj de Node.js:

  • Deno ne uzas pakaĵadministrilon npm
    kaj ne estas ligita al deponejoj, moduloj estas traktitaj per URL aŭ per dosiervojo, kaj la moduloj mem povas esti metitaj en ajna retejo;
  • Deno ne uzas "package.json" por difini modulojn;
  • API-diferenco, ĉiuj nesinkronaj agoj en Deno resendas promeson;
  • Deno postulas eksplicitan difinon de ĉiuj necesaj permesoj por dosieroj, reto kaj mediovariabloj;
  • Ĉiuj eraroj, kiuj ne estas provizitaj per prizorgantoj, kondukas al la fino de la aplikaĵo;
  • Deno uzas la ECMAScript-modulsistemon kaj ne subtenas require();
  • La enkonstruita HTTP-servilo de Deno estas skribita en TypeScript kaj funkcias sur denaskaj TCP-ingoj, dum la Node.js HTTP-servilo estas skribita en C kaj disponigas ligojn por JavaScript. La programistoj de Deno koncentriĝis pri optimumigo de la tuta TCP-ingotavolo kaj disponigado de pli ĝenerala interfaco. Deno HTTP-Servilo disponigas pli malaltan trairon sed garantias antaŭvideblan malaltan latentecon. Ekzemple, en la testo, simpla aplikaĵo bazita sur Deno HTTP-servilo povis prilabori 25 mil petojn sekundo kun maksimuma latenteco de 1.3 milisekundoj. En Node.js, simila aplikaĵo prilaboris 34 mil petojn sekundo, sed latentecoj variis de 2 kaj 300 milisekundoj.
  • Deno ne kongruas kun pakaĵoj por Node.js (NPM), sed estas disvolvita aparte intertavolo por kongruo kun la norma Node.js-biblioteko, dum ĝi disvolviĝas, pli kaj pli da aplikaĵoj skribitaj por Node.js povos ruliĝi en Deno.
  • fonto: opennet.ru

Aldoni komenton