2 pontos por GN⁺ 2024-05-19 | 1 comentários | Compartilhar no WhatsApp
  • Gio é uma biblioteca para criar GUIs multiplataforma em modo imediato na linguagem Go.
  • Plataformas suportadas: Linux, macOS, Windows, Android, iOS, FreeBSD, OpenBSD, WebAssembly.
  • Dependências: o Gio exige apenas bibliotecas de plataforma para gerenciamento de janelas, entrada e renderização via GPU.

Por que Gio?

  • Desenvolvimento de GUI eficiente e flexível: o Gio ajuda a criar GUIs eficientes e flexíveis em todas as principais plataformas.
  • Tecnologia gráfica 2D moderna: combina a flexibilidade do paradigma gráfico de modo imediato com tecnologias modernas de gráficos 2D para oferecer uma base consistente para o desenvolvimento de aplicações.
  • Renderizador vetorial eficiente: inclui um renderizador vetorial eficiente baseado no projeto Pathfinder, com OpenGL ES e Direct3D 11.
  • Renderização de texto e formas: permite animações eficientes, desenho transformado e independência da resolução em pixels usando apenas contornos, sem rasterizar texto e outras formas em imagens de textura.

Opinião do GN⁺

  • Utilidade do Gio: o Gio facilita o desenvolvimento de GUIs que oferecem uma experiência de usuário consistente em várias plataformas.
  • Vantagens técnicas: usa tecnologias gráficas modernas para entregar desempenho e flexibilidade ao mesmo tempo.
  • Curva de aprendizado: para desenvolvedores que já conhecem Go, é fácil de adotar, mas pode levar algum tempo para se acostumar com o novo paradigma gráfico.
  • Produtos concorrentes: em comparação com outras bibliotecas de GUI multiplataforma, o Gio se destaca pela forte integração com a linguagem Go.
  • Considerações para adoção: dependendo da complexidade do projeto, os recursos do Gio podem ser excessivos ou insuficientes, então é necessário avaliar se ele atende aos requisitos do projeto.

1 comentários

 
GN⁺ 2024-05-19
Opiniões no Hacker News

Resumo dos comentários do Hacker News

  • Renderizar tudo usando canvas pode causar problemas de acessibilidade e parecer pouco nativo

    • Assim como na versão web do Flutter, renderizar usando <canvas> pode causar problemas de acessibilidade e passar uma sensação pouco nativa.
  • Pergunta sobre a melhor forma atual de desenvolver apps multiplataforma

    • Foi levantada a questão de qual é hoje a melhor maneira de construir apps móveis e web multiplataforma, discutindo abordagens que incluam tanto a lógica de negócio quanto a UI, ou apenas a lógica de negócio.
  • Limitações na implementação da lógica de negócio com TypeScript

    • Houve uma tentativa de implementar a lógica de negócio com TypeScript, mas foi identificado o problema de desempenho insatisfatório na execução de JavaScript no iOS.
  • Experiência de desenvolvimento de apps com Go e Fyne

    • Foi compartilhada a experiência de desenvolver pequenos apps com Go e Fyne, mas com a percepção de que faltam muitos recursos e o refinamento que o Flutter oferece.
  • Problema de renderização na demo em WASM

    • Foi relatado que, no navegador Chrome em um PC com Windows 10, a demo em WASM era renderizada apenas como um retângulo preto.
  • Pergunta sobre o design de "alocação zero" do Gio

    • Um iniciante em Go comentou ter dificuldade para entender a explicação na documentação sobre o design de "alocação zero" do Gio, questionando por que as alocações acontecem, o que está sendo alocado e como isso economiza recursos.
  • Problemas de design em GUIs multiplataforma

    • Foi apontado que muitas GUIs multiplataforma têm aparência de design antigo.
  • Dificuldade de escrever aplicações complexas

    • Foi compartilhada a experiência de que é difícil escrever aplicações complexas, por falta de componentes básicos como vídeo, mapas e rich text, além de mudanças frequentes de API e impossibilidade de configurar temas.
  • Limitações de gráficos em modo imediato

    • Foi observado que gráficos em modo imediato causam problemas ao gerenciar estados complexos, levando à necessidade de implementar manualmente gráficos em modo retido.
  • Limitações do renderizador baseado em GPU do Piet

    • A ideia do renderizador baseado em GPU do Piet, que recebe como entrada pontos de controle de curvas de Bézier e tessela tudo, foi considerada interessante, mas há dificuldades para desenhar círculos reais.
  • Falta de prontidão do WASM para produção

    • Foi dito que o WASM ainda é apenas uma prova de conceito e que seriam necessários anos de engenharia para que esteja pronto para produção.
  • Problema de renderização de texto CJK no Fyne

    • Foi apontado que o Fyne não consegue renderizar texto CJK, o que inviabiliza seu uso em casos com conteúdo gerado por usuários ou necessidade de localização.
  • Falta de suporte a Unicode

    • Foi mencionado o problema de não haver suporte a Unicode.