3 pontos por GN⁺ 2024-08-12 | 1 comentários | Compartilhar no WhatsApp
  • Rust foi escolhida como a "linguagem de programação mais admirada" por 8 anos, e muitas pessoas querem escrever programas com GUI em Rust.
  • Compartilha uma abordagem usando Flutter e flutter_rust_bridge
  • Vantagens
    • Flutter é uma plataforma popular e madura, usada por muitos desenvolvedores e marcas conhecidas, e tem um grande ecossistema, o que facilita implementar os recursos desejados
    • O recurso de "hot reload" acelera o desenvolvimento de UI, e o suporte multiplataforma permite executar em várias plataformas com a mesma base de código
  • Desvantagens
    • Essa abordagem não é 100% Rust puro
      • No entanto, isso é semelhante a muitas outras UIs em Rust que usam macros ou escrevem uma DSL personalizada com outras linguagens, como HTML/CSS/Slint
    • Há críticas em relação à plataforma web
      • É mais adequado para "apps" na web e em outras plataformas (por exemplo, Google Earth, o editor de animação da Rive etc.) do que para páginas web estáticas
    • Flutter exige muito código boilerplate

O que é flutter_rust_bridge?

  • Cria uma ponte entre duas linguagens para que funcionem como se fossem uma só
  • Converte automaticamente vários tipos, &mut, async, traits, results, closures etc.
  • Além de implementar GUIs em Rust com Flutter, há vários outros casos de uso
    = usar qualquer biblioteca Rust no Flutter, ou escrever em Rust partes como algoritmos e escrever o restante em Flutter

1 comentários

 
GN⁺ 2024-08-12
Comentários no Hacker News
  • Usei isso durante alguns anos desenvolvendo apps e, no geral, fiquei satisfeito

    • O upgrade da v1 para a v2 não foi difícil, e a v2 trouxe mudanças grandes com muitos recursos úteis, uma experiência melhor de geração de código e suporte a async com tokio
    • Escrever a lógica de negócio em Rust e usar Dart no frontend foi muito eficaz
    • Acho Flutter/Dart mais fácil de entender do que React
    • Deixa um agradecimento ao @fzyzcjy pelo trabalho no FRB
  • Não vejo muito bem qual é a vantagem de escrever a UI em Dart em vez de Rust, mas sou fã do flutter_rust_bridge

    • O trabalho do fzyzcjy e da comunidade para permitir chamar código Rust a partir de Dart sem atrito é um grande trunfo para apps Flutter
    • Durante um fim de semana, reconstruí o ImageOptim em Flutter e consegui fazer um app mais poderoso e mais rápido usando bibliotecas de imagem em Rust
    • Graças à integração com Rust, o app fica mais capaz e roda mais rápido
  • Um esforço digno de elogio. No momento estou usando Tauri e tenho curiosidade sobre os prós e contras dos dois

  • Uso Flutter para a UI desktop e Rust para o backend

    • Em vez de uma bridge, separo as duas partes usando gRPC
    • Acho que essa abordagem é independente de linguagem e oferece uma interface mais limpa para fazer mock do backend no frontend
    • É possível colocar UI e backend em dispositivos diferentes e implementar uma arquitetura cliente/servidor de verdade
    • A desvantagem é que a interface pode ficar mais verbosa
  • Muito bom. Só ouvi coisas boas sobre rust_flutter_bridge

    • Tenho curiosidade sobre o quanto o Flutter é mais pesado que mobile nativo (Java, Swift) em tamanho final do app e desempenho de UI
  • Gostei da abordagem do Flutter para construir UI, mas não gostei muito de Dart

    • Fico pensando se, em teoria, não seria possível criar uma linguagem de programação dedicada só para UI
    • Uma linguagem que possa se integrar com linguagens de programação principais e que, em vez de definir dados como no formato IDL do protobuf, declare interfaces de usuário
    • Isso faz lembrar QT e XAML, mas o QT não é open source e o XAML parece não ser muito usado há bastante tempo
  • Não acho que o material design e os efeitos chamativos do Google sejam o visual mais agradável

  • Tenho curiosidade sobre o suporte a acessibilidade (a11y)

    • Não encontrei informações sobre isso na documentação, mas não dá para imaginar lançar um toolkit de GUI em 2024 sem suporte a acessibilidade, então fico me perguntando por que isso não foi mencionado
  • Muito melhor do que depender de shell do Chrome ou widgets web, elogios pelo esforço

  • Interessante. IIUC, fico curioso se isso foi feito usando tradução entre fontes

    • A documentação está escrita de forma clara para o usuário, o que impressiona
    • Gostaria de saber mais sobre essa abordagem e sobre a comparação com frameworks web em Rust baseados em wasm
    • Uma vantagem de combinar Rust com Flutter é que o Flutter já é um framework completo e permite compartilhar código e estruturas de dados entre servidor e cliente