5 puntos por GN⁺ 2024-02-06 | 2 comentarios | Compartir por WhatsApp

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

 
[Este comentario fue ocultado.]
 
GN⁺ 2024-02-06
Comentarios en Hacker News
  • Un usuario señaló que todavía no ha encontrado una forma de importar aplicaciones de Deno en entornos sin conexión a internet, y que no existe documentación al respecto. Este usuario considera que así Deno no tiene muchas esperanzas en entornos empresariales.
  • Otro usuario expresó interés en la funcionalidad de WebGPU y explicó que está creando una GUI de escritorio con JavaScript/TypeScript a través del framework Slint, sin navegador ni webview. Espera que, si Deno pudiera abrir ventanas directamente, sería posible distribuir wasm en lugar de binarios nativos para todas las plataformas. Sin embargo, añadió que la funcionalidad de WebGPU no incluye una API para abrir ventanas, por lo que todavía se necesita una biblioteca adicional.
  • Un usuario espera que mejore la situación de compilación de Deno, y señaló que los ejecutables generados superan los 90 MB y que al comprimirlos se producen errores, lo que dificulta su distribución al estilo de Go. Mencionó que Deno terminó siendo peor que la solución pkg de Node.js en términos de tamaño.
  • Otro usuario quiere ver un soporte mucho mayor para poder incrustar Deno dentro de un proceso host en Rust. Comentó que está escribiendo un bundler de JavaScript y que necesita un runtime de Node.js para ejecutar plugins, pero que el crate deno-core es 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 usando stdio desde un proceso host en Rust.
  • Un usuario comentó positivamente que, aunque no le gusta JavaScript, probó Deno y tuvo una experiencia muy fluida y rápida.
  • Otro usuario dijo que en 2023 desplegó por primera vez una aplicación de Deno no trivial en producción, y que aunque tuvo dificultades durante el aprendizaje para sincronizar archivos lock en un repositorio con múltiples puntos de entrada, en general fue una buena experiencia.
  • Sobre la noticia de que Jupyter ahora admite JavaScript y TypeScript usando Deno, un usuario reaccionó positivamente, aunque mencionó que Python ofrece un excelente soporte para números y matemáticas, y se preguntó si realmente habrá quienes quieran usar esto.
  • Un usuario comentó que es posible unirse a la lista de espera de JSR enlazada al final del artículo, y tiene curiosidad por saber qué está construyendo el equipo de Deno.
  • Hubo un usuario que compartió un enlace sobre la noticia de que Deno Deploy redujo sus regiones de GCP de 35 a 12.
  • Hay un usuario que quiere usar el framework de desarrollo web Fresh, pero señala que el hecho de que actualmente solo soporte Tailwind le parece inmaduro. También le resulta extraño que en la siguiente iteración se esté priorizando las transiciones de vista en lugar del bundling de CSS.