L'autore di Node.js hà prisentatu a piattaforma JavaScript sicura Deno 1.0

Dopu à dui anni di sviluppu prisentatu prima versione maiò Denu 1.0, una piattaforma per l'esekzione autonoma di l'applicazioni in JavaScript è TypeScript, chì pò esse usata per creà handlers chì currenu nantu à u servitore. A piattaforma hè sviluppata da Ryan Dahl (Ryan Dahl), creatore di Node.js. Cum'è Node.js, Deno usa un mutore JavaScript V8, chì hè ancu utilizatu in i navigatori basati in Chromium. À u listessu tempu, Deno ùn hè micca una furchetta di Node.js, ma hè un novu prughjettu creatu da zero. Codice di prughjettu distribuitu da sottu licenza MIT. Assemblee preparatu per Linux, Windows è macOS.

U numeru di versione significativa hè assuciatu cù l'estabilizazione di l'API in u spaziu di nome Deno, chì sò rispunsevuli di l'interazzione di l'applicazioni cù u SO. Interfacce software chì anu finu à avà micca stabilizatu, sò oculati per automaticamente è dispunibuli solu quandu eseguite in modu "--unstable". Quandu sò formate e novi versioni, tali API diventeranu gradualmente stabile. L'API in u spaziu di nomi glubale, chì include funzioni cumuni cum'è setTimeout () è fetch (), hè u più vicinu pussibule à l'API di i navigatori web convenzionali è hè sviluppatu in cunfurmità cù i normi Web per i navigatori. L'API furnite da Rust, chì sò utilizati direttamente in u codice di a piattaforma, è ancu l'interfaccia per u sviluppu di plugins per u runtime Deno, ùn sò micca stati stabilizzati è cuntinueghjanu à sviluppà.

I mutivi chjave per a creazione di una nova piattaforma JavaScript eranu u desideriu di eliminà l'errori conceptuali, ammessi in l'architettura Node.js, è furnisce l'utilizatori cun un ambiente più sicuru. Per migliurà a sicurità, u mutore V8 hè scrittu in Rust, chì evita assai di e vulnerabilità chì nascenu da a manipulazione di memoria di livellu bassu, cum'è l'accessu dopu senza, null pointer dereferences, è buffer overruns. A piattaforma hè aduprata per processà e dumande in modu senza bloccu Tokyo, scrittu ancu in Rust. Tokio vi permette di creà applicazioni d'alta prestazione basate nantu à l'architettura guidata da l'avvenimenti, supportendu e richieste di rete multi-threading è processendu in modu asincronu.

menu особенности Deno:

  • Cunfigurazione predeterminata orientata à a sicurità. L'accessu à i file, a rete è l'accessu à e variabili di l'ambienti sò disattivati ​​per difettu è deve esse attivatu esplicitamente. L'applicazioni di manera predeterminata funzionanu in ambienti sandbox isolati è ùn ponu micca accede à e capacità di u sistema senza cuncede permessi espliciti;
  • Supportu integratu per TypeScript oltre JavaScript. U compilatore TypeScript standard hè utilizatu per verificà i tipi è generà JavaScript, chì porta à un successu di rendiment cumparatu cù l'analisi JavaScript in V8. In u futuru, pensemu di preparà a nostra propria implementazione di u sistema di verificazione di u tipu TypeScript, chì migliurà u rendiment di processazione di TypeScript per un ordine di grandezza;
  • Runtime vene in a forma di un unicu schedariu eseguibile autonomu ("deno"). Per eseguisce applicazioni cù Deno hè abbastanza carica per a so piattaforma ci hè un schedariu eseguibile, circa 20 MB in grandezza, chì ùn hà micca dipendenze esterne è ùn hè micca bisognu di una stallazione speciale in u sistema. Inoltre, deno ùn hè micca una applicazione monolitica, ma hè una cullizzioni di pacchetti di casse in Rust (deno_core, rusty_v8), chì pò esse usatu separatamente;
  • Quandu principia u prugramma, è ancu per carricà moduli, pudete aduprà l'indirizzu URL. Per esempiu, per eseguisce u prugramma welcome.js, pudete aduprà u cumandimu "deno https://deno.land/std/examples/welcome.js". U codice da risorse esterne hè telecaricatu è cache in u sistema lucale, ma ùn hè mai aghjurnatu automaticamente (l'aghjurnamentu richiede esplicitamente l'esecuzione di l'applicazione cù a bandiera "--reload");
  • Trattamentu efficiente di e dumande di rete via HTTP in applicazioni; a piattaforma hè pensata per creà applicazioni di rete d'altu rendiment;
  • A capacità di creà applicazioni web universali chì ponu esse eseguite sia in Deno sia in un navigatore web regulare;
  • dispunibilità set standard di moduli, l'usu di quale ùn hè micca bisognu di ubligatoriu à dipendenze esterne. I moduli di a cullizzioni standard sò sottumessi à teste di verificazione è di cumpatibilità supplementari;
  • In più di runtime, a piattaforma Deno agisce ancu cum'è un gestore di pacchetti è permette di accede à i moduli per URL in u codice. Per esempiu, per carricà un modulu, pudete specificà in u codice "import * cum'è log da "https://deno.land/std/log/mod.ts". I fugliali scaricati da i servitori esterni via URL sò in cache. U ligame à e versioni di u modulu hè determinatu da specificà i numeri di versione in l'URL, per esempiu, "https://unpkg.com/[email prutettu]/dist/liltest.js";
  • A struttura include un sistema d'ispezione di dependenza integrata (u cumandamentu "deno info") è una utilità per u furmatu di codice (deno fmt);
  • Tutti i script di l'applicazione ponu esse cumminati in un schedariu JavaScript.

Differenze da Node.js:

  • Deno ùn usa micca u gestore di pacchetti npm
    è ùn hè micca ligatu à i repositori, i moduli sò indirizzati via un URL o da una strada di u schedariu, è i moduli stessi ponu esse posti in ogni situ web;
  • Deno ùn usa micca "package.json" per definisce i moduli;
  • Differenza API, tutte l'azzioni asincrone in Deno tornanu una prumessa;
  • Deno richiede una definizione esplicita di tutti i permessi necessarii per i schedarii, a rete è e variabili di l'ambiente;
  • Tutti l'errori chì ùn sò micca furniti cù handlers portanu à a terminazione di l'applicazione;
  • Deno usa u sistema di moduli ECMAScript è ùn sustene micca bisognu ();
  • U servitore HTTP integratu di Deno hè scrittu in TypeScript è corre nantu à i sockets TCP nativi, mentre chì u servitore HTTP Node.js hè scrittu in C è furnisce associazioni per JavaScript. I sviluppatori di Deno anu focu annantu à l'ottimisazione di tutta a capa di socket TCP è furnisce una interfaccia più generale. Deno HTTP Server furnisce un rendimentu più bassu ma guarantisci una latenza bassa prevedibile. Per esempiu, in a prova, una applicazione simplice basata nantu à u servitore HTTP Deno hà sappiutu processà 25 mila richieste per seconda cù una latenza massima di 1.3 millisecondi. In Node.js, una applicazione simile hà trattatu 34 mila richieste per seconda, ma i latenzi varianu da 2 è 300 millisecondi.
  • Deno ùn hè micca cumpatibile cù i pacchetti per Node.js (NPM), ma hè sviluppatu separatamente interlayer per a cumpatibilità cù a libreria Node.js standard, cum'è si sviluppa, più è più applicazioni scritte per Node.js seranu capace di eseguisce in Deno.
  • Source: opennet.ru

Add a comment