11 puntos por GN⁺ 2024-12-13 | 3 comentarios | Compartir por WhatsApp
  • Lanzamiento de Dioxus 0.6

    • Dioxus es un framework basado en Rust que permite construir apps web, de escritorio y móviles con una sola base de código.
    • Su objetivo es ser un framework mejor que Flutter.
    • Se enfoca en el soporte full-stack para web y en la comunicación segura por tipos entre servidor y cliente, con énfasis en alto rendimiento y una mejor experiencia para desarrolladores.
    • Esta versión 0.6 se enfocó en hacer que Dioxus sea más fácil de usar, mejorar la experiencia de desarrollo y corregir errores.
  • Principales mejoras de funciones

    • Soporte para simuladores móviles: se agregó la capacidad de ejecutar apps en simuladores y dispositivos Android e iOS.
    • Hot reloading mágico: soporte de hot reloading para cadenas formateadas, propiedades y rsx!{} anidados.
    • CLI interactiva: se reescribió la CLI de Dioxus con una nueva UX para mejorar la usabilidad.
    • Stack traces inline: captura directamente en la terminal los pánicos y logs de WASM.
    • Funciones de servidor nativas: soporte para RPC de servidor inline para apps de escritorio y móviles.
  • Mejoras en la experiencia de desarrollo

    • Toasts y pantalla de carga: se agregaron nuevos toasts y una pantalla de carga durante el desarrollo de apps web.
    • Mejoras en el autocompletado: se mejoró de forma importante la función de autocompletado de RSX.
    • Estabilización del sistema de assets: se estabilizó el sistema de assets basado en enlaces e integrado en apps nativas.
    • HTML en streaming: soporte para transmitir suspense y error boundaries del servidor al cliente.
    • SSG e ISG: soporte para generación de sitios estáticos y regeneración estática incremental.
    • Manejo de errores: manejo de errores usando ? en event handlers, tareas y componentes.
    • Elementos meta: se agregaron nuevos elementos Head, Title, Meta y Link para configurar propiedades del documento.
    • prevent_default síncrono: procesamiento síncrono de eventos en todas las plataformas.
    • Event handler onresize: seguimiento del tamaño de elementos sin IntersectionObserver.
    • Event handler onvisible: seguimiento de la visibilidad de elementos sin IntersectionObserver.
    • Integración con WGPU: renderizado de Dioxus como overlay sobre superficies WGPU y ventanas hijas.
    • dx bundle: soporte completo de dx bundle para web, iOS y Android.
    • Modo json: salida de mensajes de la CLI en JSON para herramientas de terceros y pipelines de CI/CD.
    • Nuevas plantillas: tres nuevas plantillas de inicio para apps multiplataforma.
    • Tutoriales y guías nightly: nuevos tutoriales y guías para Dioxus 0.6 y versiones posteriores.
    • Prototipo de binary patching: prototipo de un nuevo motor de hot reloading escrito completamente en Rust.
  • Información de la versión

    • Dioxus 0.6 es la versión más grande hasta ahora, con más de 350 pull requests fusionados y cientos de issues resueltos.
    • Busca mejorar significativamente la calidad del hot reloading, el autocompletado y el bundling de assets.
    • También busca hacer la CLI de Dioxus más robusta y fácil de usar.
    • Incorpora herramientas móviles directamente en la CLI de dioxus para ofrecer soporte móvil de primera clase.
  • Herramienta interactiva de línea de comandos

    • Dioxus 0.6 ofrece una experiencia de CLI completamente rediseñada.
    • La nueva CLI incluye barra de progreso en vivo, animaciones, sistema de filtros interactivo y capacidad de cambiar niveles de log en tiempo real, entre otras funciones.
  • Soporte para Android e iOS

    • En Dioxus 0.6, la CLI de dioxus soporta de forma nativa dx serve --platform ios/android.
    • Ofrece soporte de primera clase para plataformas móviles, y los targets de simulador Android e iOS admiten las mismas funciones que escritorio.
  • Renovación del motor de hot reloading

    • Se introdujeron mejoras importantes en el motor de hot reloading de Dioxus.
    • Soporte de hot reloading para cadenas formateadas, bloques rsx anidados, propiedades de componentes y expresiones simples de Rust.
  • Renovación del autocompletado

    • Se mejoró ampliamente el autocompletado de rsx! {}.
    • También se mejoró la integración con Rust-analyzer para ofrecer una mejor experiencia de autocompletado.
  • Stack traces inline de WASM e integración de tracing

    • Se ofrece integración de tracing para apps WASM, capturando pánicos y logs y enviándolos a la terminal.
  • Toasts y pantalla de carga

    • Durante el desarrollo de apps web, se proporciona una pantalla de carga que muestra el progreso del build y toasts que indican el estado de compilación.
  • Full-stack para escritorio y móvil

    • Se integran apps nativas y funciones de servidor para que las server functions funcionen de forma predeterminada en targets de escritorio y móviles.
  • Estabilización del sistema de assets Manganis

    • Se estabilizó el nuevo sistema de assets Manganis y se resolvieron varios bugs y problemas de rendimiento.
  • Suspense y streaming de HTML

    • Se introducen suspense boundaries como un nuevo primitive central para UI asíncrona.
    • Dioxus full-stack transmite cada suspense boundary desde el servidor, enviando cada chunk sin esperar a que cargue toda la página.
  • Generación de sitios estáticos e ISG

    • El soporte para generación de sitios estáticos y generación estática incremental mejora el SEO y reduce los tiempos de carga para los usuarios.
  • Elementos de documento: Title {}, Link {}, Stylesheet, Meta {}

    • Se proporcionan elementos especiales para interactuar con el objeto documento HTML y configurar propiedades del documento sin JavaScript adicional.
  • Manejo de errores con signo de interrogación

    • Element ahora cambia de Option a Result, lo que permite usar en componentes el manejo de errores habitual de Rust.
  • prevent_default síncrono

    • Se mejoró el procesamiento para permitir que todos los eventos se manejen de forma síncrona, por lo que ya no se necesita el atributo dioxus_prevent_default.
  • Event handlers onresize y onvisible

    • Se ofrecen handlers especiales para rastrear el tamaño y la visibilidad de elementos, permitiendo implementar interacciones ricas sin JavaScript.
  • Overlay híbrido con WGPU

    • Mediante la función de "ventana hija" de Dioxus Desktop, es posible integrar una app nativa de Dioxus como overlay sobre una ventana existente.
  • Soporte de bundles para web, iOS y Android

    • Se agregó soporte web y móvil a dx bundle, permitiendo empaquetar para distintos targets.
  • Salida JSON para CI / CLI

    • Se ofrece un modo de salida JSON en la CLI para recibir logs en formato JSON.
  • Nuevas plantillas de inicio

    • Se ofrecen tres nuevas plantillas de inicio para apps multiplataforma.
  • Documentación nightly, tutoriales y nuevas guías

    • Se renovaron ampliamente la documentación y los tutoriales para cubrir lo básico y poner énfasis en el despliegue.
  • Vista previa de in-place binary patching

    • Se está experimentando con la adición de hot reloading para código Rust.
  • Cambios menores

    • Incluye varios cambios menores, como soporte para system tray, event loop personalizado, separación de dioxus-document y dioxus-history, y simplificación de la API de eval.
  • Actualización de 0.5 a 0.6

    • Hay algunos cambios de API, pero en la mayoría de los casos se pueden corregir fácilmente.
  • Conclusión

    • Esta versión resuelve muchos problemas y mejora diversas funciones, haciendo de Dioxus 0.6 la versión más pulida hasta ahora.
    • En adelante, el plan es enfocarse menos en nuevas funciones y más en crear videos tutoriales, escribir documentación, corregir bugs, mejorar el rendimiento y colaborar con la comunidad.

3 comentarios

 
devsepnine 2024-12-17

Últimamente he estado usando Tauri, pero creo que también tendré que probar esto.

 
GN⁺ 2024-12-13
Comentarios de Hacker News
  • Un usuario compartió su experiencia al probar la nueva versión: creó un proyecto con cargo install y ejecutó dx serve, pero se encontró con errores del compilador. Considera que habría sido más fácil depurarlo si hubiera usado un flujo de trabajo estándar de Rust. Se puede presionar v para activar logs más detallados, pero no se muestra información adicional clara.

  • Otro usuario comentó que prueba frameworks GUI de Rust cada seis meses, pero al descargar demos o el playground se encuentra con errores. Cree que hay que ser cauteloso al tomar decisiones de inversión a largo plazo.

  • Mencionan que Dioxus es la única herramienta tecnológica de plataforma web que puede ofrecer capacidades cross-platform usando JavaScript al mínimo. También valoran positivamente el avance del stack de renderizado WGPU.

  • Señalan que a Dioxus le falta ecosistema y que no tiene librerías de componentes. Tampoco hay mucha confianza en el DOM virtual. Están siguiendo y usando a su competidor, Leptos.

  • Comentan que están usando Dioxus del lado del servidor y evalúan muy bien tanto la forma de escribir componentes como la experiencia de desarrollador.

  • Tras descubrir y adoptar Lustre, mencionan que no piensan usar nada fuera de The Elm Architecture. También están construyendo un prototipo de editor de escenarios con Iced de Rust, y confían en él porque System76 lo usa para construir Cosmic.

  • Evalúan este nuevo framework tecnológico como el más prometedor y dicen que, si tiene éxito, podría reemplazar a todos los demás frameworks. Está muy enfocado en el rendimiento, y Rust aporta la base de seguridad y performance.

  • Mencionan que Dioxus consiguió capital de riesgo, así que hay que tener cuidado antes de apostar el futuro por él. Falta información sobre si se requiere cesión de copyright o CLA, y sobre cuántos contribuidores reciben salario.

  • Sugieren que se podría mejorar el contraste del título del post para que combine mejor con el fondo de la página. También preguntan por comparaciones con el estado actual de Qt, su accesibilidad y su manejo de pantallas HiDPI. Sienten que faltan bindings de calidad para otros lenguajes aparte de C++ y Python, y mencionan que sería más popular si hubiera mejores bindings y herramientas.

  • Consideran impresionante la nueva función de hot reloading, y comentan que esperar actualizaciones de UI en otros frameworks web de Rust había sido un gran problema.