Cambios en Deno en 2023
- Deno ahora entiende el archivo
package.json y puede importar módulos integrados de Node como node:fs y node:crypto usando el especificador node:.
- La nueva API de servidor web
Deno.serve se estabilizó, y el rendimiento de HTTP mejoró aproximadamente un 73% en el año.
deno compile ahora admite workers, importaciones dinámicas y módulos npm.
- Deno aprovecha mejor los Web Streams (
ReadableStream y WriteableStream) y AbortController en toda su API, reduciendo la brecha entre la programación en navegador y del lado del servidor.
- El archivo de configuración de Deno,
deno.json, ahora también puede usarse como mapa de importación, simplifica el esquema y agrega soporte para globs y una útil propiedad de nivel superior "exclude".
- Jupyter, la herramienta de notebooks de código abierto, ahora admite Deno con JavaScript y TypeScript.
- WebGPU fue añadido a Deno tras casi un año de desarrollo.
- El TypeScript sin configuración de Deno mejoró la integración con editores gracias a avances importantes en el LSP y la integración con VS Code.
- Fresh, el framework web basado en Deno, amplió sus funciones con soporte para Tailwind, Partials, archivos de layout y más.
- Deno Deploy se volvió más potente con componentes nativos distribuidos globalmente como Deno KV, Queues y Cron.
- Se lanzó Subhosting autoservicio para que la plataforma pueda desplegar y ejecutar JavaScript multi-tenant no confiable.
Mejor compatibilidad con Node y npm
- Deno amplió su compatibilidad con el ecosistema de Node, incluyendo módulos integrados de Node como
node:fs y node:child_process mediante el especificador node:.
- Se introdujeron varias funciones nuevas para facilitar una transición fluida de Node a Deno:
- La bandera
--unstable-byonm permite usar dentro de Deno el gestor de paquetes npm de tu preferencia.
- La bandera
--unstable-sloppy-imports relaja la rigurosidad de las importaciones de módulos para adaptarse a distintos estilos y prácticas de código.
- La bandera
--unstable-unsafe-proto admite Object.prototype.__proto__, del que dependen muchos paquetes de npm.
- Con la estabilización de Node-API, ahora es posible usar paquetes npm que dependen de Node-API sin la bandera
--unstable, ampliando el alcance del soporte.
Servidor web más simple y rápido con Deno.serve()
- Se introdujo y estabilizó la función
Deno.serve() para que los desarrolladores puedan iniciar un servidor con código mínimo.
- El rendimiento mejoró notablemente gracias a optimizaciones específicas en la librería core y en los mecanismos del event loop.
- El rendimiento HTTP de Deno aumentó de forma visible en pruebas de benchmark usando una configuración básica de servidor "Hello, world".
Un deno.json más flexible
- Deno apunta a principios de programación que permitan usarse sin configuraciones complejas, y sigue mejorando el archivo
deno.json para mantener la facilidad de uso:
- Ahora
deno.json también puede usarse como mapa de importación.
deno fmt admite punto y coma, ofreciendo mayor flexibilidad en el estilo de código.
- La integración con
package.json facilita la transición entre entornos Node y Deno.
- Se simplificó la estructura de
deno.json para que los desarrolladores puedan navegarla de forma más intuitiva.
- La introducción de patrones glob permite un control más preciso sobre la inclusión o exclusión de archivos y directorios.
Una experiencia de desarrollo más fluida con LSP
- La integración del protocolo de servidor de lenguaje (LSP) de Deno ofrece funciones como ir a la definición con precisión, IntelliSense integral y formateo de código fluido para proyectos TypeScript.
- Se invirtió mucho esfuerzo en mejorar el LSP para que programar en Deno sea una experiencia más fluida e intuitiva.
WebGPU
- WebGPU integra en Deno una tecnología avanzada que permite a los desarrolladores aprovechar directamente el rendimiento del hardware GPU usando JavaScript.
- WebGPU está disponible detrás de la bandera
--unstable-webgpu y representa un hito importante para ampliar las capacidades de las aplicaciones Deno.
Notebooks de Jupyter
- Jupyter, la herramienta de notebooks de código abierto, ahora admite Deno con JavaScript y TypeScript.
- Esto permite realizar ciencia de datos, visualización y más usando JavaScript y TypeScript modernos junto con APIs estándar de la web.
Crates de Rust de código abierto destacados
- Deno está vinculado con diversos proyectos de código abierto y contribuye activamente para ampliar su conjunto de funciones y optimizar el rendimiento.
- Este año, Deno lanzó varios crates de Rust que también pueden ser útiles de forma independiente.
Fresh
- Fresh es el moderno framework web full-stack de Deno que no envía JavaScript al cliente por defecto, y sigue mejorando para ser fácil de usar y ofrecer mejor rendimiento.
Expansión del negocio cloud de Deno
- Deno Subhosting pasó de respaldar edge functions de Netlify y tiendas de comercio electrónico de clientes de Deco.cx a convertirse en un servicio propio disponible gratis para cualquiera.
- Con el lanzamiento de componentes cloud como Deno KV, Queues y Cron, avanzó hacia su visión de simplificar radicalmente el desarrollo web.
Deno 2
- Deno 2 ofrecerá un runtime mejorado, incluyendo anuncios interesantes sobre compatibilidad con Node y npm, así como sobre cómo gestionar y optimizar las dependencias de los proyectos.
Opinión de GN⁺:
- Es importante que Deno esté mejorando significativamente su compatibilidad con Node.js y enfocándose en simplificar el desarrollo web. Esto puede facilitar la migración a Deno para desarrolladores actuales de Node.js y fomentar su adopción.
- La integración de funciones avanzadas como WebGPU muestra que Deno se está volviendo apto para un rango más amplio de desarrollo de aplicaciones, más allá de ser solo una plataforma del lado del servidor. Esto puede resultar especialmente atractivo para desarrolladores que necesitan cómputo de alto rendimiento aprovechando GPU.
- Los avances en el framework Fresh y en Deno Deploy sugieren que Deno puede desempeñar un papel importante en el desarrollo web full-stack, reforzando su posición como servicio basado en la nube. Estos avances aumentan la posibilidad de que Deno se consolide como un actor clave del desarrollo web moderno.
2 comentarios
Comentarios en Hacker News
pkgde Node.js en términos de tamaño.deno-corees muy básico y difícil de incrustar. Tiene la expectativa de que Deno pueda convertirse en un "runtime de plugins" dentro del mundo de las herramientas JS, y explicó que por ahora se comunica con un proceso hijo de Node.js usandostdiodesde un proceso host en Rust.