fbpx
Wikipedia

Deno (software)

Deno Es un runtime(sistema de tiempo de ejecución) para Javascript y TypeScript está basado en el motor de Javascript V8 y en el lenguaje de programación Rust. Creado por Ryan Dahl, creador original de Node.js, y está centrado en la seguridad y productividad.[4]​ Fue anunciado por Dahl en 2018 durante su charla "10 Cosas de las que me arrepiento sobre Node.js".[5]​ Deno explícitamente toma la función de ambos runtime y Manejador de paquete dentro de un solo ejecutable, en vez de requerir un programa de administración de paquetes separado.[6][7]

Deno
Información general
Tipo de programa software libre
Autor Ryan Dahl
Desarrollador Varios
Licencia MIT license[1][2]
Información técnica
Programado en
Enlaces
Sitio web oficial
Blog
Repositorio de código

Historia

Deno fue anunciado en JSConf UE 2018 por Ryan Dahl en su charla "10 Cosas que me remuerden Sobre Node.js".[5]​ En su charla, Ryan mencionó sus remordimientos sobre las decisiones de diseño iniciales con Node.js, enfocándose en sus decisiones de no utilizar Promesas en el diseño de API, uso del sistema de construcción anticuado GYP, nodo_modules y package.json

Finalmente presentó el prototipo de Deno, buscando hacer las llamadas a sistema a través del paso de mensajes con herramientas de serialización tales como Protocol Buffers, y proporcionar banderas de línea de comando para control de acceso.

Deno fue inicialmente escrito en Go, utilizando Protocol Buffers para serialización entre los lados privilegiado (Go, con acceso de llamada del sistema) y no-privilegiado (V8).[8]​ Aun así, Go fue pronto reemplazado con Rust debido a preocupaciones por double runtime y la garbage collection.[9]​ Tokio es introducido en lugar de libuv como la plataforma conducida por eventos(event drive) asíncrona, y se adopta Flatbuffers para una serialización y deserialización "Zero Copy" más rápida. Más tarde, en agosto de 2019, FlatBuffers era finalmente sacado después de publicados los benchmarks que median una significativa sobrecarga de la serialización en abril de 2019.[10][11][12][13]

Una librería estándar, modelada al estilo de la librería estándar de Go, fue creada en noviembre de 2018 para proporcionar una extensa cantidad de utilidades y herramientas, parcialmente solucionando el problema de Node.js de la explosión del árbol de dependencias.[14]

Deno 1.0 oficial fue liberado el 13 de mayo de 2020.[15]

Visión general

Deno busca ser un entorno de scripting productivo y seguro para el programador moderno.[6]​ Similar a Node.js, Deno enfatiza en arquitectura manejada por eventos, proveyendo un conjunto de utilidades de entrada/salida asíncronas(no bloqueantes), además de sus versiones síncronas(bloquenates). Deno puede ser usado para crear servidores web, llevar a cabo computación científica, etc.

Comparación con Node.js

Deno y Node.js son ambos un runtime, basado en el motor v8 Javascript engine de Google, el mismo motor utilizado en Google Chrome. Ambos tienen event loops, proporcionan interfaces de líneas de comando para correr scripts, además de una amplia gama de utilidades de sistema.

Deno principalmente se diferencia de Node.js en los siguientes aspectos:[6]

  1. Usa el módulo ES como el sistema de módulo por omisión, en vez de CommonJS.
  2. Usa URLs para cargar dependencias locales o remotas, similar a los navegadores.
  3. Incluye un manejador de paquetes interno para la bajada de recursos, sin necesidad de NPM.
  4. Soporta TypeScript nativamente usando un compilador TypeScript capturado (snapshotted TypeScript Compiler).
  5. Mejor compatibilidad con navegadores con una amplia gama de API Webs.
  6. Permite controlar el sistema de archivos y el acceso de red para correr código en entorno de pruebas (Sandbox).
  7. Redefinición del API para utilizar Promesas, ES6 y características TypeScript.
  8. Minimiza el tamaño del API básico, mientras proporciona una biblioteca estándar grande sin dependencias externas.
  9. Utiliza canales de paso de mensajes para invocar APIs del sistema con privilegio y utilizar ligaduras (bindings).

Ejemplo

La siguiente ejecuta un script básico de Deno sin ningún permiso de lectura/escritura/red (modo sandbox):

deno run main.ts 

Banderas explícitas son requeridas para activar permisos:

deno run --allow-read --allow-net main.ts 

Para inspeccionar el árbol de dependencia del script, use el subcomando info:

deno info main.ts 

Un programa Hola-mundo básico en Deno se parece es algo así a (como en Node.js):

console.log("Hello world"); 

Deno proporciona un espacio de nombre global para la mayoría de las APIs de Deno que no están disponibles en el navegador. Un programa Cat de Unix podría ser implementado como sigue:

/* cat.ts */ /* Las APIs de Deno están expuestas a través del namespace `Deno`. */ const { stdout, open, copy, args } = Deno; // await de alto nivel es soportado for (let i = 0; i < args.length; i++) { const filename = args[i]; // Obtiene los argumentos de la linea de comando const file = await open(filename); // Abre el archivo correspondiente para lectura await copy(stdout, file); // Realiza una copia cero asíncrona desde `file` a `stdout`. } 

La función Deno.copy de arriba trabaja de manera similar como io.Copy de Go, donde stdout (Salida estándar) es el destino Writer y file es la fuente Reader. Para correr este programa, necesitamos proporcionar el permiso de lectura del sistema de archivos:

deno run --allow-read cat.ts myfile 

El siguiente script de Deno implementa un servidor de HTTP básico:

// Importa `serve` desde la librería estandar remota de Deno, usando URL. import { serve } from "https://deno.land/std@v0.21.0/http/server.ts"; // La función `serve` retorna un iterador asíncrono, invocando un flujo de llamadas for await (const req of serve({ port: 8000 })) { req.respond({ body: "Hello World\n" }); } 

Cuando se ejecuta este programa, Deno automáticamente descarga y cachea las librerías remotas y compila el código. De forma similar, podemos correr un script de librería estándar (como un servidor de archivo) directamente sin explícitamente descargarlo, proporcionando la URL como archivo de entrada ( -A activa todos los permisos):

$ deno run -A https://deno.land/std/http/file_server.ts Download https://deno.land/std/http/file_server.ts Compile https://deno.land/std/http/file_server.ts ... HTTP server listening on http://0.0.0.0:4500/ 

Referencias

  1. «deno/LICENSE at master». GitHub. Consultado el 5 de julio de 2019. 
  2. «The MIT License». Open Source Initiative. 17 de septiembre de 2018. Consultado el 17 de septiembre de 2018. 
  3. «Deno 1.3.1». Consultado el 21 de agosto de 2020 – via GitHub. 
  4. «Deno: Secure V8 TypeScript Runtime from Original Node.js Creator». InfoQ. Consultado el 17 de mayo de 2019. 
  5. JSConf (6 de junio de 2018), 10 Things I Regret About Node.js - Ryan Dahl - JSConf EU 2018, consultado el 17 de mayo de 2019 .
  6. «Deno Manual». deno.land. Consultado el 17 de mayo de 2019. 
  7. Paul Krill (21 de junio de 2018). «Ryan Dahl’s Node.js regrets lead to Deno». InfoWorld. 
  8. «denoland/deno, branch "golang"». Github. 
  9. «Suggestion: Look into porting to Rust and using Tokio». GitHub. 
  10. «Tokio - The asynchronous run-time for the Rust programming language.». Tokio.rs. 
  11. «Protobuf seems like a lot of overhead for this use case?». Github. 
  12. «Remove flatbuffers». GitHub. 
  13. «Replace flatbuffers». GitHub. 
  14. «denoland/deno_std: deno standard modules». Github. 
  15. «Deno 1.0». deno.land. Consultado el 14 de mayo de 2020. 

Enlaces externos

  • Página web oficial (en inglés)
  •   Datos: Q65070939
  •   Multimedia: Deno

deno, software, deno, runtime, sistema, tiempo, ejecución, para, javascript, typescript, está, basado, motor, javascript, lenguaje, programación, rust, creado, ryan, dahl, creador, original, node, está, centrado, seguridad, productividad, anunciado, dahl, 2018. Deno Es un runtime sistema de tiempo de ejecucion para Javascript y TypeScript esta basado en el motor de Javascript V8 y en el lenguaje de programacion Rust Creado por Ryan Dahl creador original de Node js y esta centrado en la seguridad y productividad 4 Fue anunciado por Dahl en 2018 durante su charla 10 Cosas de las que me arrepiento sobre Node js 5 Deno explicitamente toma la funcion de ambos runtime y Manejador de paquete dentro de un solo ejecutable en vez de requerir un programa de administracion de paquetes separado 6 7 DenoInformacion generalTipo de programasoftware libreAutorRyan DahlDesarrolladorVariosLicenciaMIT license 1 2 Informacion tecnicaProgramado enRustTypeScriptJavaScriptC EnlacesSitio web oficial Blog Repositorio de codigo editar datos en Wikidata Indice 1 Historia 2 Vision general 2 1 Comparacion con Node js 3 Ejemplo 4 Referencias 5 Enlaces externosHistoria EditarDeno fue anunciado en JSConf UE 2018 por Ryan Dahl en su charla 10 Cosas que me remuerden Sobre Node js 5 En su charla Ryan menciono sus remordimientos sobre las decisiones de diseno iniciales con Node js enfocandose en sus decisiones de no utilizar Promesas en el diseno de API uso del sistema de construccion anticuado GYP nodo modules y package jsonFinalmente presento el prototipo de Deno buscando hacer las llamadas a sistema a traves del paso de mensajes con herramientas de serializacion tales como Protocol Buffers y proporcionar banderas de linea de comando para control de acceso Deno fue inicialmente escrito en Go utilizando Protocol Buffers para serializacion entre los lados privilegiado Go con acceso de llamada del sistema y no privilegiado V8 8 Aun asi Go fue pronto reemplazado con Rust debido a preocupaciones por double runtime y la garbage collection 9 Tokio es introducido en lugar de libuv como la plataforma conducida por eventos event drive asincrona y se adopta Flatbuffers para una serializacion y deserializacion Zero Copy mas rapida Mas tarde en agosto de 2019 FlatBuffers era finalmente sacado despues de publicados los benchmarks que median una significativa sobrecarga de la serializacion en abril de 2019 10 11 12 13 Una libreria estandar modelada al estilo de la libreria estandar de Go fue creada en noviembre de 2018 para proporcionar una extensa cantidad de utilidades y herramientas parcialmente solucionando el problema de Node js de la explosion del arbol de dependencias 14 Deno 1 0 oficial fue liberado el 13 de mayo de 2020 15 Vision general EditarDeno busca ser un entorno de scripting productivo y seguro para el programador moderno 6 Similar a Node js Deno enfatiza en arquitectura manejada por eventos proveyendo un conjunto de utilidades de entrada salida asincronas no bloqueantes ademas de sus versiones sincronas bloquenates Deno puede ser usado para crear servidores web llevar a cabo computacion cientifica etc Comparacion con Node js Editar Deno y Node js son ambos un runtime basado en el motor v8 Javascript engine de Google el mismo motor utilizado en Google Chrome Ambos tienen event loops proporcionan interfaces de lineas de comando para correr scripts ademas de una amplia gama de utilidades de sistema Deno principalmente se diferencia de Node js en los siguientes aspectos 6 Usa el modulo ES como el sistema de modulo por omision en vez de CommonJS Usa URLs para cargar dependencias locales o remotas similar a los navegadores Incluye un manejador de paquetes interno para la bajada de recursos sin necesidad de NPM Soporta TypeScript nativamente usando un compilador TypeScript capturado snapshotted TypeScript Compiler Mejor compatibilidad con navegadores con una amplia gama de API Webs Permite controlar el sistema de archivos y el acceso de red para correr codigo en entorno de pruebas Sandbox Redefinicion del API para utilizar Promesas ES6 y caracteristicas TypeScript Minimiza el tamano del API basico mientras proporciona una biblioteca estandar grande sin dependencias externas Utiliza canales de paso de mensajes para invocar APIs del sistema con privilegio y utilizar ligaduras bindings Ejemplo EditarLa siguiente ejecuta un script basico de Deno sin ningun permiso de lectura escritura red modo sandbox deno run main tsBanderas explicitas son requeridas para activar permisos deno run allow read allow net main tsPara inspeccionar el arbol de dependencia del script use el subcomando info deno info main tsUn programa Hola mundo basico en Deno se parece es algo asi a como en Node js console log Hello world Deno proporciona un espacio de nombre global para la mayoria de las APIs de Deno que no estan disponibles en el navegador Un programa Cat de Unix podria ser implementado como sigue cat ts Las APIs de Deno estan expuestas a traves del namespace Deno const stdout open copy args Deno await de alto nivel es soportado for let i 0 i lt args length i const filename args i Obtiene los argumentos de la linea de comando const file await open filename Abre el archivo correspondiente para lectura await copy stdout file Realiza una copia cero asincrona desde file a stdout La funcion Deno copy de arriba trabaja de manera similar como io Copy de Go donde stdout Salida estandar es el destino Writer y file es la fuente Reader Para correr este programa necesitamos proporcionar el permiso de lectura del sistema de archivos deno run allow read cat ts myfileEl siguiente script de Deno implementa un servidor de HTTP basico Importa serve desde la libreria estandar remota de Deno usando URL import serve from https deno land std v0 21 0 http server ts La funcion serve retorna un iterador asincrono invocando un flujo de llamadas for await const req of serve port 8000 req respond body Hello World n Cuando se ejecuta este programa Deno automaticamente descarga y cachea las librerias remotas y compila el codigo De forma similar podemos correr un script de libreria estandar como un servidor de archivo directamente sin explicitamente descargarlo proporcionando la URL como archivo de entrada A activa todos los permisos deno run A https deno land std http file server ts Download https deno land std http file server ts Compile https deno land std http file server ts HTTP server listening on http 0 0 0 0 4500 Referencias Editar deno LICENSE at master GitHub Consultado el 5 de julio de 2019 The MIT License Open Source Initiative 17 de septiembre de 2018 Consultado el 17 de septiembre de 2018 Deno 1 3 1 Consultado el 21 de agosto de 2020 via GitHub Deno Secure V8 TypeScript Runtime from Original Node js Creator InfoQ Consultado el 17 de mayo de 2019 a b JSConf 6 de junio de 2018 10 Things I Regret About Node js Ryan Dahl JSConf EU 2018 consultado el 17 de mayo de 2019 a b c Deno Manual deno land Consultado el 17 de mayo de 2019 Paul Krill 21 de junio de 2018 Ryan Dahl s Node js regrets lead to Deno InfoWorld denoland deno branch golang Github Suggestion Look into porting to Rust and using Tokio GitHub Tokio The asynchronous run time for the Rust programming language Tokio rs Protobuf seems like a lot of overhead for this use case Github Remove flatbuffers GitHub Replace flatbuffers GitHub denoland deno std deno standard modules Github Deno 1 0 deno land Consultado el 14 de mayo de 2020 Enlaces externos EditarPagina web oficial en ingles Datos Q65070939 Multimedia Deno Obtenido de https es wikipedia org w index php title Deno software amp oldid 138866611, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos