2 puntos por GN⁺ 2024-05-19 | 1 comentarios | Compartir por WhatsApp
  • Gio es una biblioteca para escribir GUI multiplataforma de modo inmediato en el lenguaje Go.
  • Plataformas compatibles: Linux, macOS, Windows, Android, iOS, FreeBSD, OpenBSD, WebAssembly.
  • Dependencias: Gio solo requiere bibliotecas de plataforma para gestión de ventanas, entrada y renderizado con GPU.

¿Por qué Gio?

  • Desarrollo de GUI eficiente y flexible: Gio ayuda a construir GUI eficientes y flexibles en todas las plataformas principales.
  • Tecnología gráfica 2D moderna: combina la flexibilidad del paradigma gráfico de modo inmediato con tecnología gráfica 2D moderna para ofrecer una base coherente para el desarrollo de aplicaciones.
  • Renderizador vectorial eficiente: incluye un renderizador vectorial eficiente basado en una implementación del proyecto Pathfinder sobre OpenGL ES y Direct3D 11.
  • Renderizado de texto y formas: admite animaciones eficientes, dibujo transformado e independencia de resolución de píxeles usando solo contornos, sin hornear texto ni otras formas en imágenes de textura.

La opinión de GN⁺

  • Utilidad de Gio: Gio facilita desarrollar GUI que ofrecen una experiencia de usuario consistente en distintas plataformas.
  • Ventajas técnicas: aprovecha tecnología gráfica moderna para ofrecer rendimiento y flexibilidad al mismo tiempo.
  • Curva de aprendizaje: si ya conoces Go, es fácil acercarse a Gio, aunque puede tomar tiempo acostumbrarse al nuevo paradigma gráfico.
  • Productos competidores: en comparación con otras bibliotecas GUI multiplataforma, Gio destaca por su excelente integración con Go.
  • Consideraciones para adoptarlo: según la complejidad del proyecto, las capacidades de Gio pueden resultar excesivas o insuficientes, por lo que conviene revisar si se ajusta a los requisitos del proyecto.

1 comentarios

 
GN⁺ 2024-05-19
Opiniones en Hacker News

Resumen de comentarios de Hacker News

  • Renderizar todo usando canvas puede causar problemas de accesibilidad y sentirse poco nativo

    • Renderizar usando <canvas>, como en la versión web de Flutter, puede causar problemas de accesibilidad y dar una sensación poco nativa.
  • Pregunta sobre la mejor forma actual de desarrollar apps multiplataforma

    • Se plantea cuál es la mejor manera hoy de construir apps móviles y web multiplataforma, ya sea incluyendo tanto la lógica de negocio como la UI, o solo la lógica de negocio.
  • Limitaciones al implementar lógica de negocio con TypeScript

    • Se intentó implementar la lógica de negocio con TypeScript, pero se encontró el problema de que el rendimiento de ejecución de JavaScript en iOS no es bueno.
  • Experiencia desarrollando apps con Go y Fyne

    • Se comparte la experiencia de haber desarrollado una app pequeña con Go y Fyne, aunque se sintió que le faltaban muchas funciones y el nivel de pulido que ofrece Flutter.
  • Problemas de renderizado en la demo de WASM

    • Se experimentó un problema en el que la demo de WASM solo se renderiza como rectángulos negros en el navegador Chrome de una PC con Windows 10.
  • Pregunta sobre el diseño de "cero asignaciones" de Gio

    • Un principiante en Go comenta que le cuesta entender la explicación en la documentación sobre el diseño de "cero asignaciones" de Gio, y pregunta por qué ocurren las asignaciones, qué se está asignando y cómo se ahorran.
  • Problemas de diseño en las GUI multiplataforma

    • Se señala que muchas GUI multiplataforma tienen una apariencia de diseño anticuado.
  • Dificultad para escribir aplicaciones complejas

    • Se comparte la experiencia de que es difícil escribir aplicaciones complejas, ya que faltan componentes básicos como video, mapas y texto enriquecido, la API cambia con frecuencia y no se pueden configurar temas.
  • Límites de los gráficos de modo inmediato

    • Se menciona que los gráficos de modo inmediato presentan problemas al manejar estados complejos, lo que lleva a tener que implementar directamente gráficos de modo retenido.
  • Límites del renderizador basado en GPU de piet

    • Aunque la idea del renderizador basado en GPU de piet, que toma como entrada puntos de control de curvas Bézier y tesela todo, parece interesante, en la práctica hay dificultades incluso para dibujar círculos reales.
  • WASM aún no está listo para producción

    • Se comenta que WASM no pasa de ser una prueba de concepto y que harán falta años de ingeniería para que esté listo para producción.
  • Problemas de Fyne al renderizar texto CJK

    • Se señala que Fyne no puede renderizar texto CJK, por lo que no puede usarse en casos donde se necesite contenido generado por usuarios o localización.
  • Falta de soporte para Unicode

    • Se menciona el problema de no contar con soporte para Unicode.