3 puntos por GN⁺ 2024-08-12 | 1 comentarios | Compartir por WhatsApp
  • Rust ha sido elegida durante 8 años como el "lenguaje de programación más admirado", y mucha gente quiere escribir programas GUI con Rust.
  • Se comparte un enfoque que utiliza Flutter y flutter_rust_bridge.
  • Ventajas
    • Flutter es una plataforma popular y madura, usada por muchos desarrolladores y marcas reconocidas, y tiene un gran ecosistema, por lo que es fácil implementar la funcionalidad que se desea.
    • La función de "hot reload" acelera el desarrollo de UI, y al ser multiplataforma permite ejecutar la misma base de código en varias plataformas.
  • Desventajas
    • Este enfoque no es 100% Rust puro.
      • Sin embargo, esto es similar a muchas otras UI de Rust que usan macros o escriben un DSL personalizado con otros lenguajes como HTML/CSS/Slint.
    • Hay críticas sobre la plataforma web.
      • Es más adecuada para "apps" en la web y otras plataformas (por ejemplo, Google Earth, el editor de animación de Rive, etc.) que para páginas web estáticas.
    • Flutter requiere mucho código boilerplate.

¿Qué es flutter_rust_bridge?

  • Crea un puente entre dos lenguajes para que funcionen como si fueran uno solo.
  • Convierte automáticamente varios tipos, &mut, async, traits, results, closures, etc.
  • Además de implementar una GUI de Rust con Flutter, tiene diversos casos de uso.
    = Como usar cualquier biblioteca Rust en Flutter, o escribir en Rust código como algoritmos y dejar el resto del código en Flutter, etc.

1 comentarios

 
GN⁺ 2024-08-12
Comentarios en Hacker News
  • Lo he usado mientras desarrollaba apps durante algunos años y, en general, quedé satisfecho

    • La actualización de v1 a v2 no fue difícil, y v2 trajo cambios importantes con muchas funciones útiles, una mejor experiencia de generación de código y soporte para async con tokio
    • Escribir la lógica de negocio en Rust y usar Dart para el frontend fue muy efectivo
    • Creo que Flutter/Dart es más fácil de entender que React
    • Agradece a @fzyzcjy por su trabajo en FRB
  • No veo muy clara la ventaja de escribir la UI en Dart en lugar de Rust, pero soy fan de flutter_rust_bridge

    • El trabajo de fzyzcjy y la comunidad para permitir llamar código Rust sin fricciones desde Dart es un gran activo para las apps de Flutter
    • Durante un fin de semana rehízo ImageOptim con Flutter y pudo crear una app más potente y rápida usando librerías de imágenes en Rust
    • Gracias a la integración con Rust, la app funciona con más capacidades y mayor velocidad
  • Es un esfuerzo digno de elogio. Actualmente usa Tauri y tiene curiosidad por las ventajas y desventajas de ambos

  • Usa Flutter para la UI de escritorio y Rust para el backend

    • En lugar de un bridge, separa ambas partes usando gRPC
    • Cree que este enfoque es agnóstico al lenguaje y ofrece una interfaz más limpia para hacer mocking del backend desde el frontend
    • Se puede implementar una verdadera arquitectura cliente/servidor colocando la UI y el backend en dispositivos distintos
    • La desventaja es que la interfaz puede volverse más verbosa
  • Bien hecho. Solo ha escuchado cosas buenas sobre rust_flutter_bridge

    • Tiene curiosidad sobre qué tan pesado es Flutter frente a móvil nativo (Java, Swift) en tamaño final de la app y sobre el rendimiento de la UI
  • Le gustó el enfoque de Flutter para construir UI, pero Dart no le agradó mucho

    • Piensa que, en teoría, podría existir un lenguaje de programación dedicado solo a UI
    • Un lenguaje que pueda interoperar con los principales lenguajes de programación y que, en lugar de definir datos como el formato IDL de protobuf, declare interfaces de usuario
    • Le vienen a la mente QT y XAML, pero QT no es de código abierto y XAML parece no haberse usado en mucho tiempo
  • Cree que Material Design de Google y el efecto de fuegos artificiales no se ven de la mejor manera

  • Tiene curiosidad sobre el soporte de accesibilidad (a11y)

    • No encontró información al respecto en la documentación, pero le cuesta imaginar que en 2024 se lance un toolkit GUI sin soporte de accesibilidad, así que se pregunta por qué no se menciona
  • Mucho mejor que depender de un shell de Chrome o de widgets web; aplaude el esfuerzo

  • Interesante. IIUC, se pregunta si esto se logró usando traducción entre fuentes

    • Le impresiona que la documentación esté escrita de forma clara para el usuario
    • Le gustaría saber más sobre este enfoque y cómo se compara con los frameworks web de Rust basados en wasm
    • Una ventaja de combinar Rust y Flutter es que Flutter ya es un framework completo y que se puede compartir código y estructuras de datos entre el lado del servidor y el del cliente