27 pontos por xguru 2024-10-05 | 4 comentários | Compartilhar no WhatsApp
  • Tauri é um framework para criar binários pequenos e rápidos para todas as principais plataformas desktop (macOS, Linux, Windows) e móveis (iOS, Android)
  • Pode integrar qualquer framework de frontend compilado com HTML, JavaScript e CSS, e usar linguagens como Rust, Swift e Kotlin para a lógica de backend quando necessário
  • Oferece uma ampla API JavaScript, então na maioria dos casos não é necessário escrever código em Rust, Swift ou Kotlin

Quando usar o Tauri?

  • Quando você quer uma única base de código de UI para todas as plataformas
  • Quando quer alcançar o maior número possível de usuários em suas plataformas (ex.: Windows, macOS, Linux, Android, iOS)
  • Quando você é desenvolvedor frontend web e quer criar aplicações nativas
  • Quando você é desenvolvedor Rust e quer criar aplicações com uma ótima UI, com a opção de também escrever em Rust
  • Quando você tem uma equipe de desenvolvedores web e quer expandir para o mercado de aplicações nativas com baixo investimento inicial
  • Quando você tem uma equipe de desenvolvedores Rust e quer escrever tudo em Rust

Vantagens e melhorias do 2.0

Melhorias na experiência de início

  • A experiência do desenvolvedor (DX) é uma prioridade, e há um esforço para tornar esse processo inicial tão fluido quanto criar e implantar a aplicação final
  • Foi criado o projeto create-tauri-app (CTA), permitindo que desenvolvedores comecem do zero e tenham um app Tauri em execução em minutos, não em horas

Hot-Module Replacement

  • O hot module replacement (HMR), que já vinha sendo considerado na linha 1.x para melhorar o processo de desenvolvimento, agora foi estendido para dispositivos móveis e emuladores
  • Toda alteração no frontend da aplicação pode ser visualizada em tempo real no dispositivo ou sistema operacional em desenvolvimento, sem precisar reconstruir a aplicação inteira

Plugins

  • No Tauri 2.0, foi criado um sistema de plugins mais avançado. Muitas partes da funcionalidade anterior foram movidas para plugins oficiais, facilitando a contribuição da comunidade ao Tauri
  • O sistema de plugins também suporta plugins móveis. No iOS, é possível escrever ou reutilizar código nativo em Swift; no Android, em Kotlin; e expor funções diretamente ao frontend do Tauri usando anotações (@Command no Android), implementando subclasses (YourPluginClass: Plugin no iOS) ou chamando código Swift ou Kotlin a partir de comandos Tauri baseados em Rust
  • Os plugins oficiais fornecidos seguem a versão principal do Tauri
    • Autostart: iniciar o app automaticamente na inicialização do sistema
    • Barcode Scanner: escanear códigos de barras como QR code e EAN-13 em apps móveis
    • Biometric: prompt de autenticação biométrica no Android e iOS
    • Clipboard: ler e escrever na área de transferência do sistema
    • Command Line Interface (CLI): analisar argumentos da interface de linha de comando
    • Deep Linking: definir uma aplicação Tauri como manipuladora padrão de URLs
    • Dialog: diálogos nativos do sistema para abrir e salvar arquivos e exibir mensagens
    • File System: acesso ao sistema de arquivos
    • Global Shortcut: registrar atalhos globais
    • HTTP Client: acesso a um cliente HTTP escrito em Rust
    • Localhost: usar um servidor localhost em aplicações de produção
    • Logging: logging configurável
    • NFC: ler e escrever tags NFC no Android e iOS
    • Notifications: enviar notificações nativas aos usuários
    • OS Information: ler informações sobre o sistema operacional
    • Persisted Scope: persistir alterações de escopo em tempo de execução no sistema de arquivos
    • Positioner: mover janelas para posições comuns
    • Process: acesso ao processo atual
    • Shell: acessar o shell do sistema para gerenciar arquivos e URLs com aplicações padrão e criar processos filhos
    • Single Instance: garantir que apenas uma instância do app Tauri seja executada por vez
    • SQL: plugin Tauri que fornece uma interface para o frontend se comunicar com bancos de dados SQL via sqlx
    • Store: armazenamento persistente de chave-valor
    • Stronghold: banco de dados seguro e criptografado
    • System Tray
    • Updater: atualização dentro do app para aplicações Tauri
    • Upload: upload de arquivos via HTTP
    • Websocket: abrir conexões WebSocket em JavaScript usando um cliente Rust
    • Window Customization
    • Window State: manter tamanho e posição da janela

A morte da Allowlist, vida longa à Allowlist

  • allowlist não existe mais, porque os limites desse sistema foram atingidos rapidamente
  • Ele foi criado exclusivamente para funcionalidades centrais do Tauri, mas não cobria todas as APIs do Tauri
  • O novo sistema não cobre apenas toda a superfície das APIs centrais do Tauri, como também permite que desenvolvedores de apps e plugins implementem seu próprio controle de acesso e escopos com uma abordagem unificada
  • Foi criado um sistema de controle de acesso flexível e fácil de usar com permissions - "interruptores liga/desliga para comandos do Tauri", scopes - "validação de parâmetros para comandos do Tauri" e capabilities - "vincular permissões e escopos ao Windows e ao WebView"
  • É possível criar arquivos nomeados de permissões ou escopos e reutilizá-los e combiná-los com outras permissões ou escopos nomeados
  • Isso permite construir conjuntos descritivos mais granulares contendo várias permissões e escopos simples ou complexos
  • Com essa adição, o core do Tauri agora consegue entender se uma mensagem de invocação de comando vinda do WebView do frontend deve ter permissão para chegar à função do comando

Reescrita da comunicação entre processos (IPC)

  • A camada de IPC foi reescrita e agora suporta um recurso há muito desejado chamado Raw Payload, além de mudar a forma como funciona internamente
  • Antes, todos os payloads de IPC eram serializados e desserializados em JSON, o que gerava overhead. Isso se tornava perceptível quando mais de alguns kilobytes eram transferidos entre frontend e backend
  • O novo sistema suporta Raw Request. Isso permite usar bytes brutos diretamente ou um processo próprio de (de)serialização (ex.: bson, protobuf, avro etc.) para acelerar a transferência de grandes volumes de dados do backend para o frontend, ou vice-versa

Guia de distribuição

  • No Tauri 2.0, a variedade de distribuição aumentou significativamente graças ao ecossistema móvel e às contribuições da comunidade
  • O guia oficial de como distribuir para Apple Appstore, Google Play, Microsoft Store, CrabNebula Cloud, Flathub, Snapcraft, AUR e outros formatos de distribuição está incluído na documentação de distribuição

4 comentários

 
plumpmath 2024-10-10

https://github.com/DioxusLabs/dioxus

Se você vai desenvolver só com Rust, isso parece melhor. Acabei de descobrir agora. Eu ia focar em Tauri, mas como dá para desenvolver tudo usando apenas uma linguagem, Rust, vou de Dioxus~* Dizem que é possível acessar nativamente direto, sendo mais rápido que IPC.

 
xguru 2024-10-10

Dioxus - biblioteca de UI em Rust influenciada pelo React
Quando eu postei uma vez no passado, como era a versão 0.3, houve comentários dizendo que havia alguns obstáculos.

Dioxus 0.5: apps web, desktop e mobile desenvolvidos em Rust
Agora já é a 0.5, então talvez isso tenha mudado.

 
tsboard 2024-10-05

Que notícia realmente incrível. Parece que também será útil para desenvolver aplicativos nativos para Windows e que poderá ser muito bem aproveitado também no mobile.

 
bus710 2024-10-05

Reescreveram o IPC... parece que vai ser bom para enviar dados grandes, como vídeo.