L-awtur ta 'Node.js ippreżenta l-pjattaforma JavaScript sigura Deno 1.0

Wara sentejn ta 'żvilupp ippreżentata l-ewwel ħarġa maġġuri Agħtini 1.0, pjattaforma għall-eżekuzzjoni waħedha ta 'applikazzjonijiet f'JavaScript u TypeScript, li jistgħu jintużaw biex jinħolqu handlers li jimxu fuq is-server. Il-pjattaforma hija żviluppata minn Ryan Dahl (Ryan Dahl), kreatur ta 'Node.js. Bħal Node.js, Deno juża magna JavaScript V8, li tintuża wkoll fil-browsers ibbażati fuq il-Kromju. Fl-istess ħin, Deno mhuwiex furketta ta 'Node.js, iżda huwa proġett ġdid maħluq mill-bidu. Kodiċi tal-proġett imqassma minn taħt liċenzja MIT. Assemblaġġi ippreparat għal Linux, Windows u macOS.

In-numru tal-verżjoni sinifikanti huwa assoċjat mal-istabbilizzazzjoni tal-APIs fl-ispazju tal-isem Deno, li huma responsabbli għall-interazzjoni tal-applikazzjonijiet mal-OS. Interfaces tas-softwer li s'issa mhux stabbilizzat, huma moħbija awtomatikament u disponibbli biss meta taħdem fil-modalità "--instabbli". Hekk kif jiġu ffurmati verżjonijiet ġodda, tali APIs gradwalment isiru stabbli. L-API fl-ispazju tal-isem globali, li jinkludi funzjonijiet komuni bħal setTimeout() u fetch(), huwa qrib kemm jista' jkun tal-API tal-web browsers konvenzjonali u huwa żviluppat skont l-istandards tal-Web għall-browsers. L-APIs ipprovduti minn Rust, li jintużaw direttament fil-kodiċi tal-pjattaforma, kif ukoll l-interface għall-iżvilupp ta 'plugins għar-runtime ta' Deno, għadhom ma ġewx stabbilizzati u għadhom qed jiżviluppaw.

Il-motivi ewlenin għall-ħolqien ta 'pjattaforma JavaScript ġdida kienu x-xewqa li jiġu eliminati żbalji kunċettwali, ammessi fl-arkitettura Node.js, u tipprovdi lill-utenti b'ambjent aktar sigur. Biex tittejjeb is-sigurtà, il-magna V8 hija miktuba f'Rut, li tevita ħafna mill-vulnerabbiltajiet li jinqalgħu minn manipulazzjoni ta 'memorja ta' livell baxx, bħal aċċess bla ħlas wara, dereferences null pointer, u buffer overruns. Il-pjattaforma tintuża biex tipproċessa t-talbiet fil-mod li ma jimblokkax Tokyo, miktub ukoll bir-Rut. Tokio jippermettilek toħloq applikazzjonijiet ta 'prestazzjoni għolja bbażati fuq arkitettura mmexxija mill-avvenimenti, li tappoġġja talbiet ta' netwerk multi-threading u proċessar f'modalità asinkronika.

Il-prinċipali Karatteristiċi Deno:

  • Konfigurazzjoni default orjentata lejn is-sigurtà. L-aċċess għall-fajls, in-netwerking, u l-aċċess għall-varjabbli ambjentali huma diżattivati ​​b'mod awtomatiku u għandhom ikunu attivati ​​b'mod espliċitu. L-applikazzjonijiet awtomatikament jaħdmu f'ambjenti sandbox iżolati u ma jistgħux jaċċessaw il-kapaċitajiet tas-sistema mingħajr ma jagħtu permessi espliċiti;
  • Appoġġ integrat għal TypeScript lil hinn minn JavaScript. Il-kompilatur standard TypeScript jintuża biex jiċċekkja t-tipi u jiġġenera JavaScript, li jwassal għal prestazzjoni hit meta mqabbla mal-parsing JavaScript f'V8. Fil-futur, qed nippjanaw li nippreparaw l-implimentazzjoni tagħna stess tas-sistema ta 'verifika tat-tip TypeScript, li se ttejjeb il-prestazzjoni tal-ipproċessar tat-TypeScript b'ordni ta' kobor;
  • Il-ħin tar-runtime jiġi fil-forma ta’ fajl eżekutibbli waħdu wieħed (“deno”). Biex tħaddem applikazzjonijiet bl-użu ta 'Deno huwa biżżejjed niżżel għall-pjattaforma tagħha hemm fajl wieħed eżekutibbli, madwar 20 MB fid-daqs, li m'għandux dipendenzi esterni u ma jeħtieġ ebda installazzjoni speċjali fuq is-sistema. Barra minn hekk, deno mhijiex applikazzjoni monolitika, iżda hija ġabra ta' pakketti ta' ċestuni f'Rut (deno_core, rusty_v8), li jistgħu jintużaw separatament;
  • Meta tibda l-programm, kif ukoll għat-tagħbija tal-moduli, tista 'tuża l-indirizzar tal-URL. Pereżempju, biex tmexxi l-programm welcome.js, tista 'tuża l-kmand "deno https://deno.land/std/examples/welcome.js". Il-kodiċi minn riżorsi esterni jitniżżlu u jinżammu fil-cache fis-sistema lokali, iżda qatt ma jiġi aġġornat awtomatikament (l-aġġornament jeħtieġ li l-applikazzjoni titħaddem b'mod espliċitu bil-marka "--reload");
  • Ipproċessar effiċjenti ta 'talbiet tan-netwerk permezz ta' HTTP fl-applikazzjonijiet; il-pjattaforma hija mfassla biex toħloq applikazzjonijiet ta 'netwerk ta' prestazzjoni għolja;
  • Il-ħila li toħloq applikazzjonijiet web universali li jistgħu jiġu eżegwiti kemm f'Deno kif ukoll f'web browser regolari;
  • disponibbiltà sett standard ta' moduli, li l-użu tagħhom ma jeħtieġx rabta ma' dipendenzi esterni. Moduli mill-ġbir standard għaddew minn verifika addizzjonali u ttestjar ta 'kompatibilità;
  • Minbarra l-runtime, il-pjattaforma Deno taġixxi wkoll bħala maniġer tal-pakketti u tippermettilek taċċessa moduli permezz tal-URL ġewwa l-kodiċi. Per eżempju, biex tagħbija modulu, tista 'tispeċifika fil-kodiċi "importazzjoni * bħala log minn "https://deno.land/std/log/mod.ts". Fajls imniżżla minn servers esterni permezz tal-URL huma fil-cache. L-irbit mal-verżjonijiet tal-moduli huwa determinat billi jiġu speċifikati n-numri tal-verżjoni ġewwa l-URL, pereżempju, “https://unpkg.com/[protett bl-email]/dist/liltest.js";
  • L-istruttura tinkludi sistema integrata ta 'spezzjoni tad-dipendenza (il-kmand "deno info") u utilità għall-ifformattjar tal-kodiċi (deno fmt);
  • L-iskripts tal-applikazzjoni kollha jistgħu jingħaqdu f'fajl wieħed JavaScript.

Differenzi minn Node.js:

  • Deno ma jużax npm package manager
    u mhux marbut ma' repożitorji, il-moduli huma indirizzati permezz ta' URL jew permezz ta' mogħdija tal-fajl, u l-moduli nfushom jistgħu jitqiegħdu fuq kwalunkwe websajt;
  • Deno ma jużax "package.json" biex jiddefinixxi l-moduli;
  • differenza API, l-azzjonijiet asinkroniċi kollha f'Deno jirritornaw wegħda;
  • Deno jeħtieġ definizzjoni espliċita tal-permessi kollha meħtieġa għall-fajls, netwerks u varjabbli ambjentali;
  • L-iżbalji kollha li mhumiex ipprovduti bi handlers iwasslu għat-terminazzjoni tal-applikazzjoni;
  • Deno juża s-sistema tal-modulu ECMAScript u ma jappoġġjax require();
  • Is-server HTTP integrat ta 'Deno huwa miktub b'TypeScript u jimxi fuq sockets TCP indiġeni, filwaqt li s-server HTTP Node.js huwa miktub f'Ċ u jipprovdi rbit għal JavaScript. L-iżviluppaturi ta 'Deno ffukaw fuq l-ottimizzazzjoni tas-saff tas-socket TCP kollu u jipprovdu interface aktar ġenerali. Deno HTTP Server jipprovdi throughput aktar baxx iżda jiggarantixxi latenza baxxa prevedibbli. Pereżempju, fit-test, applikazzjoni sempliċi bbażata fuq server Deno HTTP kienet kapaċi tipproċessa 25 elf talba kull sekonda b'latency massimu ta '1.3 millisekondi. F'Node.js, applikazzjoni simili pproċessat 34 elf talba kull sekonda, iżda latenzi varjaw minn 2 u 300 millisekondi.
  • Deno mhuwiex kompatibbli mal-pakketti għal Node.js (NPM), iżda qed jiġi żviluppat separatament saff ta' bejn is-saffi għall-kompatibilità mal-librerija standard Node.js, hekk kif tiżviluppa, aktar u aktar applikazzjonijiet miktuba għal Node.js se jkunu jistgħu jaħdmu f'Deno.
  • Sors: opennet.ru

Żid kumment