Articulo de referencia

Deno (software)

Deno ( / d iː n oʊ / [5] ) es un entorno de ejecución para JavaScript , TypeScript y WebAssembly que se basa en el motor JavaScript V8 y el lenguaje de programación Rust . Deno ...

Deno ( / d n / [5] ) es un entorno de ejecución para JavaScript , TypeScript y WebAssembly que se basa en el motor JavaScript V8 y el lenguaje de programación Rust . Deno fue co-creado por Ryan Dahl , quien también creó Node.js . [6]

Deno asume explícitamente el rol tanto de entorno de ejecución como de administrador de paquetes dentro de un único ejecutable , en lugar de requerir un programa de administración de paquetes separado . [5] [7]

Historia

Deno fue anunciado en JSConf EU 2018 por Ryan Dahl en su charla "10 cosas de las que me arrepiento acerca de Node.js". [8] En su charla, Dahl mencionó sus arrepentimientos acerca de las decisiones iniciales de diseño con Node.js, centrándose en sus elecciones de no usar promesas en el diseño de API , el uso del sistema de compilación heredado GYP , node_modules y package.json, la omisión de extensiones de archivo , la resolución mágica de módulos con index.js y la ruptura del entorno sandbox de V8. [9] Finalmente presentó el prototipo de Deno, con el objetivo de lograr enlaces de llamadas del sistema a través del paso de mensajes con herramientas de serialización como Protocol Buffers , y proporcionar indicadores de línea de comandos para el control de acceso .

Deno fue escrito inicialmente en Go y utilizó Protocol Buffers para la serialización entre los lados privilegiado (Go, con acceso a llamadas del sistema) y no privilegiado (V8). [10] Sin embargo, Go fue reemplazado pronto por Rust debido a preocupaciones por el doble tiempo de ejecución y la presión de recolección de basura . [11] Tokio se introdujo en lugar de libuv como la plataforma asincrónica impulsada por eventos, [12] y FlatBuffers se adoptó para una serialización y deserialización más rápidas y de "copia cero" [13] pero más tarde, en agosto de 2019, FlatBuffers se eliminó [14] después de publicar puntos de referencia que midieron una sobrecarga significativa de serialización en abril de 2019. [15]

En noviembre de 2018 se creó una biblioteca estándar, inspirada en la biblioteca estándar de Go, para proporcionar herramientas y utilidades exhaustivas, solucionando parcialmente el problema de explosión del árbol de dependencias de Node.js. [16]

La versión oficial Deno 1.0 se lanzó el 13 de mayo de 2020. [17]

Deno Deploy, inspirado en Cloudflare Workers, [18] se lanzó el 23 de junio de 2021. [19] Anunciado el 4 de mayo de 2022 La versión Beta 4 mejoró el panel de control y agregó funcionalidad de facturación. [20]

Deno Fresh 1.0 se anunció el 28 de junio de 2022. [21] Cuenta con un nuevo marco web de pila completa para Deno que, de forma predeterminada, no envía ningún código JavaScript al cliente. El marco no tiene ningún paso de compilación, lo que permite mejoras de un orden de magnitud en los tiempos de implementación. La versión 1.1 se lanzó el 8 de septiembre de 2022. [22]

La versión beta de Deno SaaSKit se anunció el 4 de abril de 2023. [23] Es una plantilla SaaS moderna de código abierto creada con Fresh y Deno.

Descripción general

Deno tiene como objetivo ser un entorno de scripting productivo y seguro para el programador moderno. [5] De manera similar a Node.js, Deno enfatiza la arquitectura basada en eventos , proporcionando un conjunto de utilidades de E/S centrales sin bloqueo , junto con sus versiones de bloqueo. Deno podría usarse para crear servidores web , realizar cálculos científicos, etc. Deno es un software de código abierto bajo la licencia MIT . [24]

Comparación con Node.js

Deno y Node.js son entornos de ejecución basados ​​en el motor de JavaScript V8 desarrollado por el Proyecto Chromium, el motor utilizado para los navegadores web Chromium y Google Chrome . Ambos tienen bucles de eventos internos y proporcionan interfaces de línea de comandos para ejecutar scripts y una amplia gama de utilidades del sistema.

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

  1. Solo admite módulos ES, como los navegadores donde Node.js admite tanto módulos ES como CommonJS . La compatibilidad con CommonJS en Deno es posible mediante el uso de una capa de compatibilidad. [25] [26]
  2. Admite URL para cargar dependencias locales o remotas, de forma similar a los navegadores , y utiliza especificadores de módulo como npm:y node:para importar módulos Node.JS NPM o polyfill. Node.js admite tanto URL [27] como módulos.
  3. No requiere un administrador de paquetes para obtener recursos, por lo que no es necesario un registro como npm . [28]
  4. Admite TypeScript de forma inmediata, [29] utilizando un compilador TypeScript con instantáneas o el compilador swc [30] con mecanismos de almacenamiento en caché.
  5. Tiene como objetivo lograr una mejor compatibilidad con navegadores con una amplia gama de API web.
  6. Restringe el acceso al sistema de archivos y a la red de forma predeterminada para ejecutar código aislado.
  7. Admite una única API para utilizar promesas, ES6 y funciones TypeScript, mientras que Node.js admite API de promesas y de devolución de llamada.
  8. Minimiza el tamaño de la API principal, al tiempo que proporciona una gran biblioteca estándar sin dependencias externas.
  9. Utiliza canales de paso de mensajes para invocar API de sistema privilegiadas y utilizar enlaces.

Fondos

El 29 de marzo de 2021, se anunció la creación de Deno Land Inc., con el respaldo de millones de dólares de Shasta Ventures , Mozilla Corporation y algunos otros. Se creó para promover el desarrollo de Deno y brindar una oferta comercial a los usuarios. [1]

Un año después, Deno anunció una financiación adicional de Serie A de 21 millones de dólares liderada por Sequoia Capital . [31]

Historial de versiones

Las tablas a continuación se crearon utilizando la página oficial de lanzamientos. [32]

Deno

Deno Fresco

Los números de versión se basan en lanzamientos de Github. [33]

Deno SaasKit

Los números de versión se basan en los números de lanzamiento del repositorio de Github. [34]

Ejemplos

Un programa básico de ¡Hola mundo! en Deno:

consola . log ( "¡Hola, mundo!" );

Los espacios de nombres globales Denoexponen API que no están disponibles en el navegador. Una implementación del programa cat de Unix : [1]

/** 
* cat.ts 
*/ 
for ( const nombre_archivo de Deno . args ) { const archivo = await Deno . open ( nombre_archivo ); await archivo . readable . pipeTo ( Deno . stdout . writable , { preventClose : true }); }     
      
       

Un servidor web sencillo : [2]

Deno . serve (( req ) => new Respuesta ( "hola mundo" ));   

Deno descarga y almacena en caché automáticamente los archivos de la biblioteca estándar remota cuando se ejecuta el script y luego compila el código.

De manera similar, puede ejecutar un script de biblioteca estándar (como un servidor de archivos ) directamente sin descargarlo explícitamente, proporcionando la URL como nombre de archivo de entrada ( -Aactiva todos los permisos):

$ deno  run  -A  https://deno.land/std/http/file_server.ts
 Descargar https://deno.land/std/http/file_server.ts 
Compilar https://deno.land/std/http/file_server.ts 
... 
Servidor HTTP escuchando en http://0.0.0.0:4500/

Referencias

  1. ^ por Ryan Dahl, Bert Belder (29 de marzo de 2021). "Anuncio de la empresa Deno".
  2. ^ "Colaboradores, denoland/deno, Github". GitHub . Consultado el 5 de julio de 2019 .
  3. ^ "Versión 1.46.3". 4 de septiembre de 2024. Consultado el 21 de septiembre de 2024 .
  4. ^ "deno/LICENSE at main". GitHub . Consultado el 5 de julio de 2019 .
  5. ^ abcd "Manual de Deno". deno.com . Consultado el 17 de mayo de 2019 .
  6. ^ Schiemann, Dylan (26 de diciembre de 2018). «Deno: Secure V8 TypeScript Runtime from Original Node.js Creator». InfoQ . Archivado desde el original el 17 de mayo de 2019. Consultado el 17 de mayo de 2019 .
  7. ^ Paul Krill (21 de junio de 2018). "Los arrepentimientos de Ryan Dahl con respecto a Node.js conducen a Deno". InfoWorld . Archivado desde el original el 14 de abril de 2019.
  8. ^ Dahl, Ryan (6 de junio de 2018). 10 cosas de las que me arrepiento de Node.js. JSConf EU . Consultado el 17 de mayo de 2019 a través de YouTube.
  9. ^ Dahl, Ryan (6 de junio de 2018). "Errores de diseño en Node" (PDF) . Github .
  10. ^ "denoland/deno, rama" golang"". Github .
  11. ^ "Sugerencia: considere la posibilidad de portar a Rust y usar Tokio". GitHub .
  12. ^ "Tokio - El entorno de ejecución asincrónico para el lenguaje de programación Rust". Tokio.rs .
  13. ^ "¿Protobuf parece requerir demasiado trabajo adicional para este caso de uso?". Github .
  14. ^ "Eliminar buffers planos". GitHub .
  15. ^ "Reemplazar flatbuffers". GitHub . 15 de abril de 2019 . Consultado el 11 de julio de 2019 .
  16. ^ "denoland/deno_std: módulos estándar de deno". Github . 3 de marzo de 2022.
  17. ^ "Deno 1.0". deno.com . Consultado el 14 de mayo de 2020 .
  18. ^ Dahl, Ryan (4 de mayo de 2022). «Contenedores de JavaScript». tinyclouds.org . Archivado desde el original el 4 de mayo de 2022.
  19. ^ Krill, Paul (24 de junio de 2021). «Deno Company presenta un servicio de alojamiento de JavaScript del lado del servidor». InfoWorld . Archivado desde el original el 27 de junio de 2022 . Consultado el 14 de abril de 2022 .
  20. ^ Krill, Paul (3 de junio de 2022). "Deno Deploy avanza hacia GA, agrega un plan pago". InfoWorld . Consultado el 24 de julio de 2022 .
  21. ^ Luca, Casonato (22 de julio de 2022). "Introducción de Fresh 1.0 como nuevo framework web full stack para Deno". Blog de Deno . Consultado el 24 de julio de 2022 .
  22. ^ Casonato, Luca (8 de septiembre de 2022). "Novedades 1.1: JSX automático, complementos, herramientas de desarrollo y más". Blog de Deno . Consultado el 10 de septiembre de 2022 .
  23. ^ Jiang, Andy (4 de abril de 2023). "Anuncio de Deno SaaSKit: una plantilla SaaS de código abierto creada con Fresh". Blog de Deno . Consultado el 4 de abril de 2022 .
  24. ^ "Deno está listo para la producción". InfoQ . Consultado el 1 de julio de 2020 .
  25. ^ "Módulos: Módulos ECMAScript | Documentación de Node.js v17.6.0".
  26. ^ "Deno: un entorno de ejecución moderno para JavaScript y TypeScript".
  27. ^ "Módulos: Módulos ECMAScript | Documentación de Node.js v17.6.0".
  28. ^ "Deno: un entorno de ejecución moderno para JavaScript y TypeScript".
  29. ^ "Deno.js en producción. Conclusiones clave". Medium.com . Consultado el 16 de mayo de 2022 .
  30. ^ "Documentación". GitHub . 3 de marzo de 2022.
  31. ^ "Deno recauda 21 millones de dólares". deno.com . Archivado desde el original el 22 de junio de 2022.
  32. ^ "Lanzamientos". GitHub . 2020-12-30 . Consultado el 2021-01-14 .
  33. ^ "Lanzamientos".
  34. ^ "Lanzamientos".
  • Sitio web oficial
Obtenido de "https://es.wikipedia.org/w/index.php?title=Deno_(software)&oldid=1242541443"