Sobre o projeto
Druid foi um kit de ferramentas de UI experimental nativo em Rust, desenvolvido pela Linebender, projetado com uma abordagem orientada a dados para criar aplicativos desktop polidos. O projeto visava proporcionar uma experiência de usuário suave em todas as plataformas comuns, enfatizando desempenho, interações ricas e integração nativa de plataforma.
O kit agora está oficialmente descontinuado e sem manutenção. O novo esforço de desenvolvimento migrou para o Xilem, que herda muito do Druid, mas introduz mudanças fundamentais para melhor desempenho e suporte mais amplo a aplicativos. Embora o Druid permaneça razoavelmente utilizável para alguns aplicativos e tenha um histórico significativo de testes, nenhum novo recurso ou correção de bugs está planejado.
Componentes arquiteturais principais incluem:
- druid-shell: Um shell de aplicativo que abstrai a plataforma, responsável por iniciar runloops nativos, ouvir eventos e convertê-los em representações independentes de plataforma.
- Piet: Uma biblioteca de abstração gráfica 2D com múltiplos backends (Direct2D para Windows, CoreGraphics para macOS, Cairo para Linux e Web para alvos web) usada para desenho e layout de texto.
- Sistema de widgets: Widgets implementam o trait Widget parametrizado por um tipo de dados, com métodos para manipulação de eventos, gerenciamento de ciclo de vida, atualizações, layout e pintura. Cada método recebe um objeto de contexto correspondente e um ambiente contendo parâmetros de tema.
- Layout: Inspirado no modelo de layout de caixa do Flutter, widgets recebem BoxConstraints fornecendo tamanhos mínimos e máximos.
- Trait Data: Representa tipos de valor que são baratos para comparar e clonar, tipicamente derivados para estruturas de estado de aplicativo.
- Lens: Fornece acesso a partes de estruturas de dados maiores, permitindo que widgets trabalhem com campos específicos do estado do aplicativo.
Druid estava disponível no crates.io e suportava macOS, Linux (exigindo GTK+3), Windows e OpenBSD. O projeto fornecia widgets básicos de utilidade e layout, com a capacidade de compor widgets personalizados. O kit visava fácil construção e empacotamento, respeito às convenções de plataforma, dimensionamento de exibição confiável, suporte à internacionalização, acessibilidade, binários pequenos e rápidos, e uma árvore de dependências pequena.
Não-objetivos incluíam usar widgets nativos de plataforma, incorporar em pipelines de renderização personalizados, aderir a estilos arquiteturais específicos como Elm e suportar renderização HTML para alvos web. Alternativas para esses casos de uso incluíam Relm, Slint, Conrod, Iced e Moxie.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.