stringtranslate.com

Deno (software)

Deno / d n / [5] es un tiempo 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 cocreado por Ryan Dahl , quien también creó Node.js. [6]

Deno asume explícitamente el rol de tiempo de ejecución y 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 de Node.js". [8] En su charla, Dahl mencionó su arrepentimiento por las decisiones de diseño iniciales con Node.js, enfocándose en sus opciones de no usar promesas en el diseño de API , el uso del sistema de compilación heredado GYP , node_modules y package.json, omitiendo el archivo extensiones, resolución mágica del módulo con index.js y romper el entorno aislado de V8. [9] Finalmente presentó el prototipo de Deno, con el objetivo de lograr enlaces de llamadas al sistema a través del paso de mensajes con herramientas de serialización como Protocol Buffers , y proporcionar indicadores de línea de comando para el control de acceso .

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

En noviembre de 2018 se creó una biblioteca estándar, modelada a partir de la biblioteca estándar de Go, para proporcionar amplias herramientas y utilidades, resolviendo parcialmente el problema de explosión del árbol de dependencias de Node.js. [dieciséis]

El Deno 1.0 oficial 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] Anunciada el 4 de mayo de 2022, Beta 4 mejora el panel y agrega funcionalidad de facturación. La disponibilidad general de Deno Deploy está prevista para el tercer trimestre de 2022. [20]

Deno Fresh 1.0 se anunció el 28 de junio de 2022. [21] Presenta un nuevo marco web de pila completa para Deno que no envía JavaScript al cliente. El marco no tiene ningún paso de construcción que permita 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 y de código abierto creada con Fresh y Deno.

Descripción general

Deno pretende ser un entorno de scripting productivo y seguro para el programador moderno. [5] Al igual que 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 tiempos de ejecución creados sobre el motor JavaScript V8 desarrollado por Chromium Project, 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 desvía principalmente de Node.js en los siguientes aspectos: [5]

  1. Solo admite módulos ES, como 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, similar a los navegadores , y utiliza especificadores de módulo como npm:y node:para importar módulos NPM o polyfill Node.JS. 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 listo para usar, [29] utilizando un compilador de TypeScript con instantáneas o el compilador swc [30] con mecanismos de almacenamiento en caché.
  5. Tiene como objetivo 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 de espacio aislado.
  7. Admite una única API para utilizar promesas, funciones ES6 y TypeScript, mientras que Node.js admite API de promesa y devolución de llamada.
  8. Minimiza el tamaño de la API principal y, al mismo tiempo, proporciona una gran biblioteca estándar sin dependencias externas.
  9. Utiliza canales de paso de mensajes para invocar API del sistema privilegiado y utilizar enlaces.

Fondos

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

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

Historial de lanzamientos

Las siguientes tablas se crearon utilizando la página oficial de lanzamientos. [32]

Deno


Deno fresco

Deno SaasKit

Ejemplos

Un básico ¡Hola mundo! programa 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 de archivo de Deno . args ) { const archivo = await Deno . abrir ( nombre de archivo ); espera archivo . legible . pipeTo ( Deno . stdout . writable , { prevenirClose : verdadero }); }                

Un servidor web sencillo : [2]

Deno . servir (( req ) => nueva 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. ^ ab 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.40.5". 15 de febrero de 2024 . Consultado el 19 de febrero de 2024 .
  4. ^ "deno/LICENCIA en principal". GitHub . Consultado el 5 de julio de 2019 .
  5. ^ abcd "Manual Deno". deno.com . Consultado el 17 de mayo de 2019 .
  6. ^ Schiemann, Dylan (26 de diciembre de 2018). "Deno: tiempo de ejecución seguro de TypeScript V8 del creador original de Node.js". 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 sobre Node.js conducen a Deno". InfoMundo .
  8. ^ JSConf (6 de junio de 2018), Diez cosas de las que me arrepiento de Node.js - Ryan Dahl - JSConf EU 2018 , consultado el 17 de mayo de 2019
  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 migrar a Rust y usar Tokio". GitHub .
  12. ^ "Tokio: el tiempo de ejecución asincrónico para el lenguaje de programación Rust". Tokio.rs .
  13. ^ "¿Protobuf parece una gran sobrecarga para este caso de uso?". Github .
  14. ^ "Eliminar buffers planos". GitHub .
  15. ^ "Reemplazar búferes planos". GitHub . 15 de abril de 2019 . Consultado el 11 de julio de 2019 .
  16. ^ "denoland/deno_std: módulos estándar 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 el servicio de alojamiento de JavaScript del lado del servidor". InfoMundo . 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 y agrega un plan pago". InfoMundo . Consultado el 24 de julio de 2022 .
  21. ^ Luca, Casonato (22 de julio de 2022). "Presentación Fresh 1.0 como nuevo marco web completo para Deno". Blog Deno . Consultado el 24 de julio de 2022 .
  22. ^ Casonato, Luca (8 de septiembre de 2022). "Fresh 1.1: JSX automático, complementos, DevTools y más". Blog 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 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 tiempo 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 tiempo de ejecución moderno para JavaScript y TypeScript".
  29. ^ "Deno.js en producción. Conclusiones clave". Medio.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 14 de enero de 2021 .

enlaces externos