Deno (mjukvara)

Deno
Sorts Körning
Författare Ryan Dahl
Utvecklaren Deno Company [1] och bidragsgivare
Skrivet i TypeScript , JavaScript , Rust , C++
Operativ system Linux , macOS , Microsoft Windows
Första upplagan 13 maj 2018 [2] ( 2018-05-13 )
senaste versionen
Licens MIT-licens [3] [4]
Hemsida deno.land
 Mediafiler på Wikimedia Commons

Deno är en mjukvaruplattform, runtime för JavaScript och TypeScript , baserad på V8 JavaScript-motorn och skriven i programmeringsspråket Rust. Deno-projektet skapades av Ryan Dahl , skapare av Node.js. [6] Deno kombinerar funktionaliteten hos en runtime och en pakethanterare . [7] [8]

Historik

Deno-projektet tillkännagavs av Ryan Dahl i "10 Things I Regret About Node.js" på JSConf EU 2018. [9] I detta föredrag beklagade Dahl ett antal arkitektoniska beslut som han själv hade tagit i Node. js. [10] I slutet av rapporten presenterade han Deno-prototypen.

Deno skrevs ursprungligen i Go och använde Protocol Buffers för att utbyta meddelanden mellan den privilegierade delen av motorn (skriven i Go och har tillgång till systemfunktionsanrop) och den oprivilegierade delen (den V8-baserade JavaScript-runtime). [11] Men Go ersattes snart av Rust på grund av problem som orsakades av att ha två körtider i samma process, var och en med sin egen sopsamlare . [12] Libuv-biblioteket som implementerar asynkron händelsehantering ersattes av Tokio, [13] och ett experiment gjordes för att ersätta Protocol Buffers -teknologin med Flat Buffers, vilket ansågs misslyckat på grund av prestandaproblem. [14] [15] [16]

Standardbiblioteket, baserat på standardbiblioteket för programmeringsspråket Go, introducerades i november 2018. Detta steg togs i ett försök att undvika problemet som fanns i Node.js runtime - på grund av bristen på standardbiblioteket, utvecklare som använder Node.js måste inkludera externa beroenden i sina projekt för att lösa grundläggande problem. [17]

Den officiella versionen av Deno 1.0 släpptes den 13 maj 2020 [18]

Den 29 mars 2021 tillkännagavs skapandet av Deno. Projektet fick ekonomiskt stöd från Shasta Ventures, Mozilla Corporation och flera andra företag. Bolaget bildades för att säkerställa den fortsatta utvecklingen av Deno samt utvecklingen av kommersiella lösningar baserade på tekniken.

Översikt

Denos mål är att skapa en ergonomisk körtidsmiljö för den moderna programmeraren. [19] I likhet med Node.js implementerar Deno en händelsestyrd arkitektur genom att tillhandahålla en uppsättning icke-blockerande I/O-kontrollmetoder. Deno kan användas för att skapa webbservrar , utföra vetenskapliga beräkningar, etc. [20]

Jämförelse med Node.js

Deno och Node.js är körtider baserade på V8 JavaScript-motorn som används av Google Chrome . Båda körtiderna är baserade på händelseloopbearbetning och tillhandahåller kommandoradsgränssnitt för att köra skript.

De huvudsakliga skillnaderna mellan Deno och Node.js är följande: [19]

  1. Deno använder standarden ES Module istället för CommonJS.
  2. Deno använder URL:er för att ansluta lokala eller externa beroenden.
  3. Deno har en inbyggd pakethanterare, d.v.s. externa lösningar som npm krävs inte.
  4. Deno stöder TypeScript med den inbyggda TypeScript- kompilatorn med cachningsmekanismer.
  5. Deno ägnar särskild uppmärksamhet åt webbläsarkompatibilitet på källkodsnivå.
  6. Deno begränsar som standard JavaScript-åtkomst till filsystemet, nätverket och andra system.
  7. Deno implementerar det nya Promises API och andra ES6- och TypeScript-funktioner.
  8. Deno-API:et är litet, medan körtiden ger ett stort standardbibliotek utan externa beroenden.
  9. Deno använder meddelandepipor för att anropa privilegierade system-API:er.

Anteckningar

  1. Ryan Dahl, Bert Belder. Tillkännage Deno Company (29 mars 2021).
  2. Contributors, denoland/deno, Github . Hämtad 5 juli 2019. Arkiverad från originalet 30 maj 2019.
  3. deno/LICENS at main . GitHub . Tillträdesdatum: 5 juli 2019.
  4. MIT-licensen . Open Source Initiative (17 september 2018). Hämtad 17 september 2018. Arkiverad från originalet 09 maj 2020.
  5. Utgåva 1.26.0 - 2022.
  6. Deno: Secure V8 TypeScript Runtime från Original Node.js Creator . InfoQ . Hämtad 17 maj 2019. Arkiverad från originalet 8 januari 2020.
  7. Deno Manual . deno.land . Hämtad 17 maj 2019. Arkiverad från originalet 8 januari 2020.
  8. Paul Crill. Ryan Dahls Node.js beklagar leder till Deno . InfoWorld (21 juni 2018). Hämtad 26 april 2021. Arkiverad från originalet 25 april 2020.
  9. JSConf (2018-06-06), 10 Things I Regret About Node.js - Ryan Dahl - JSConf EU 2018 , < https://www.youtube.com/watch?v=M3BM9TB-8yA > Arkiverad 25 april 2020 kl. Wayback- maskinen 
  10. Dahl. Designfel i nod . Github (6 juni 2018).
  11. denoland/deno, gren "golang" . Github .
  12. Förslag: Titta på portering till Rust och använd Tokio . GitHub . Hämtad 26 april 2021. Arkiverad från originalet 29 augusti 2018.
  13. Tokio - Den asynkrona körtiden för programmeringsspråket Rust. . tokio.rs . Hämtad 26 april 2021. Arkiverad från originalet 20 maj 2020.
  14. Ta bort flatbuffertar . GitHub . Hämtad 26 april 2021. Arkiverad från originalet 26 november 2020.
  15. Protobuf verkar vara en hel del omkostnader för detta användningsfall? . Github . Hämtad 26 april 2021. Arkiverad från originalet 8 december 2020.
  16. Byt ut flatbuffertar . GitHub . Hämtad 26 april 2021. Arkiverad från originalet 26 november 2020.
  17. denoland/deno_std: deno standardmoduler . Github . Hämtad 26 april 2021. Arkiverad från originalet 15 juni 2020.
  18. Deno 1.0 . deno.land . Hämtad 14 maj 2020. Arkiverad från originalet 14 maj 2020.
  19. 12 Deno Manual . deno.land . Hämtad 17 maj 2019. Arkiverad från originalet 8 januari 2020. "Deno Manual" Arkiverad 8 januari 2020 på Wayback Machine . deno.land .
  20. Deno är redo för produktion  . InfoQ . Hämtad 1 juli 2020. Arkiverad från originalet 1 juli 2020.

Länkar