-
Lançamento do Dioxus 0.6
- Dioxus é um framework baseado em Rust que permite criar apps web, desktop e mobile com uma única base de código
- O objetivo é ser um framework melhor que o Flutter
- Tem foco em suporte full-stack para web e comunicação segura em tipos entre servidor e cliente, com ênfase em desempenho rápido e melhor experiência para desenvolvedores
- Esta versão 0.6 se concentrou em tornar o Dioxus mais fácil de usar, melhorar a experiência dos desenvolvedores e corrigir bugs
-
Principais melhorias de recursos
- Suporte a simuladores mobile: adiciona a capacidade de executar apps em simuladores e dispositivos Android e iOS.
- Magic hot reloading: suporte a hot reloading para strings formatadas, propriedades e
rsx!{} aninhado.
- CLI interativo: a CLI do Dioxus foi reescrita com uma nova UX para melhorar a usabilidade.
- Stack traces inline: captura panics e logs de WASM diretamente no terminal.
- Funções de servidor nativas: suporte a RPC de servidor inline para apps desktop e mobile.
-
Melhorias na experiência do desenvolvedor
- Toasts e tela de carregamento: adiciona novos toasts e tela de carregamento durante o desenvolvimento de apps web.
- Melhorias no autocomplete: grande melhoria no recurso de autocomplete do RSX.
- Estabilização do sistema de assets: estabilização do sistema de assets baseado em links integrado a apps nativos.
- HTML em streaming: suporte a streaming de suspense e error boundaries do servidor para o cliente.
- SSG e ISG: suporte a geração de sites estáticos e regeneração estática incremental.
- Tratamento de erros: uso de
? em event handlers, tasks e componentes para tratar erros.
- Elementos meta: adiciona novos elementos Head, Title, Meta e Link para definir propriedades do documento.
prevent_default síncrono: processa eventos de forma síncrona em todas as plataformas.
- Event handler
onresize: acompanha o tamanho de elementos sem IntersectionObserver.
- Event handler
onvisible: acompanha a visibilidade de elementos sem IntersectionObserver.
- Integração com WGPU: renderiza o Dioxus como overlay sobre superfícies WGPU e janelas-filhas.
dx bundle: suporte completo a dx bundle para web, iOS e Android.
- Modo JSON: saída de mensagens da CLI em JSON para uso com ferramentas de terceiros e pipelines de CI/CD.
- Novos templates: três novos templates iniciais para apps multiplataforma.
- Tutoriais e guias nightly: novos tutoriais e guias para Dioxus 0.6 e versões posteriores.
- Protótipo de binary patching: protótipo de um novo engine de hot reloading totalmente em Rust.
-
Informações do lançamento
- Dioxus 0.6 é a maior versão já lançada, com mais de 350 pull requests mesclados e centenas de issues resolvidas.
- O objetivo é melhorar bastante a qualidade do hot reloading, do autocomplete e do empacotamento de assets.
- Também busca tornar a CLI do Dioxus mais robusta e mais fácil de usar.
- As ferramentas mobile foram incorporadas inline à CLI do Dioxus para oferecer suporte mobile de primeira classe.
-
Ferramenta de linha de comando interativa
- Dioxus 0.6 oferece uma experiência de CLI totalmente reformulada.
- A nova CLI suporta barra de progresso ao vivo, animações, sistema de filtros interativo e a capacidade de alterar níveis de log em tempo real, entre outros recursos.
-
Suporte a Android e iOS
- No Dioxus 0.6, a CLI do Dioxus oferece suporte nativo a
dx serve --platform ios/android.
- Ela fornece suporte de primeira classe para plataformas mobile, e os alvos de simulador Android e iOS oferecem as mesmas funcionalidades do desktop.
-
Reformulação do engine de hot reloading
- Foram introduzidas grandes melhorias no engine de hot reloading do Dioxus.
- Há suporte a hot reloading para strings formatadas, blocos
rsx aninhados, propriedades de componentes e expressões Rust simples.
-
Reformulação do recurso de autocomplete
- O recurso de autocomplete do
rsx! {} foi bastante aprimorado.
- A integração com o Rust-analyzer foi melhorada para oferecer uma experiência de autocomplete superior.
-
Stack traces inline de WASM e integração de tracing
- É oferecida integração de tracing para apps WASM, capturando panics e logs e enviando-os ao terminal.
-
Toasts e tela de carregamento
- Durante o desenvolvimento de apps web, são fornecidos uma tela de carregamento que mostra o progresso do build e toasts que indicam o status do build.
-
Full-stack para desktop e mobile
- Apps nativos e funções de servidor foram integrados para que funções de servidor funcionem por padrão em alvos desktop e mobile.
-
Estabilização do sistema de assets Manganis
- O novo sistema de assets Manganis foi estabilizado, com várias correções de bugs e problemas de desempenho resolvidos.
-
Suspense e streaming de HTML
- Foi introduzido o suspense boundary, um novo primitive central para UI assíncrona.
- O Dioxus full-stack faz streaming de cada suspense boundary a partir do servidor, transmitindo cada chunk sem esperar o carregamento completo da página.
-
Geração de sites estáticos e ISG
- O suporte a geração de sites estáticos e geração estática incremental melhora o SEO e reduz o tempo de carregamento para usuários.
-
Elementos de documento: Title {}, Link {}, Stylesheet, Meta {}
- São fornecidos elementos especiais para interagir com o objeto do documento HTML, permitindo definir propriedades do documento sem JavaScript adicional.
-
Tratamento de erros com ponto de interrogação
Element agora mudou de Option para Result, permitindo usar o tratamento de erros comum do Rust em componentes.
-
prevent_default síncrono
- Foi aprimorado para permitir que todo o processamento de eventos seja feito de forma síncrona, eliminando a necessidade da propriedade
dioxus_prevent_default.
-
Event handlers onresize e onvisible
- São fornecidos handlers especiais para acompanhar tamanho e visibilidade de elementos, permitindo criar interações ricas sem JavaScript.
-
Overlay híbrido com WGPU
- Por meio do recurso de "janela-filha" do Dioxus desktop, é possível integrar um app Dioxus nativo como overlay em uma janela existente.
-
Suporte a bundle para web, iOS e Android
- Foi adicionado suporte web e mobile ao
dx bundle, permitindo empacotar para vários alvos.
-
Saída JSON para CI / CLI
- É fornecido um modo de saída JSON na CLI, permitindo receber logs em formato JSON.
-
Novos templates iniciais
- São oferecidos três novos templates iniciais para apps multiplataforma.
-
Documentação nightly, tutoriais e novos guias
- A documentação e os tutoriais foram amplamente reformulados para cobrir o básico e dar foco ao deploy.
-
Prévia de in-place binary patching
- Está em andamento um experimento para adicionar hot reloading de código Rust.
-
Pequenas mudanças
- Inclui várias mudanças menores, como suporte à system tray, event loop personalizado, separação de
dioxus-document e dioxus-history, simplificação da API de eval e outras.
-
Upgrade da 0.5 para a 0.6
- Há algumas mudanças de API, mas na maioria dos casos elas podem ser corrigidas facilmente.
-
Conclusão
- Esta versão resolve muitos problemas e melhora vários recursos, tornando o Dioxus 0.6 a versão mais completa até agora.
- Daqui para frente, o plano é focar menos em novos recursos e mais em vídeos tutoriais, documentação, correção de bugs, melhorias de desempenho e colaboração com a comunidade.
3 comentários
Recentemente eu estava usando o tauri, acho que vou ter que experimentar esse também.
Dioxus - biblioteca de UI multiplataforma para Rust inspirada no React
Dioxus 0.5 - apps web, desktop e mobile desenvolvidos com Rust
Comentários do Hacker News
Um usuário compartilhou sua experiência ao tentar a nova release: usou
cargo installpara criar o projeto e executoudx serve, mas encontrou erros de compilação. Ele achou que teria sido mais fácil depurar se um fluxo de trabalho padrão do Rust tivesse sido usado. É possível ativar logs mais detalhados pressionandov, mas isso não fornece informações adicionais claras.Outro usuário mencionou que experimenta frameworks GUI em Rust a cada 6 meses, mas encontra erros ao baixar demos ou playgrounds. Ele acha que decisões de investimento de longo prazo devem ser tomadas com cautela.
Foi mencionado que o Dioxus é a única ferramenta tecnológica de plataforma web capaz de oferecer recursos cross-platform usando o mínimo possível de JavaScript. O avanço da stack de renderização WGPU foi avaliado de forma positiva.
Foi mencionado que o Dioxus carece de ecossistema e não tem biblioteca de componentes. Também há pouca confiança no DOM virtual. O concorrente Leptos está sendo acompanhado e usado.
Um usuário disse que está usando o Dioxus no lado do servidor e avaliou como muito boa a forma de escrever componentes e a experiência do desenvolvedor.
Após descobrir e adotar o Lustre, um usuário comentou que não pretende usar nada além do The Elm Architecture. Ele está construindo um protótipo de editor de cenários com o Iced, de Rust, e confia nele porque a System76 o está usando para construir o Cosmic.
Foi avaliado que esse novo framework tecnológico é o mais promissor e, se tiver sucesso, poderá substituir todos os outros frameworks. Ele é focado em desempenho, e o Rust fornece a base de segurança e performance.
Foi mencionado que, como o Dioxus atraiu capital de risco, é preciso cautela antes de apostar o futuro nele. Faltam informações sobre a necessidade de cessão de direitos autorais ou CLA, e sobre quantos contribuidores recebem salário.
Foi sugerido que o contraste do título do post poderia ser melhorado para combinar melhor com o fundo da página. Também foi feita uma pergunta comparando com a posição atual do Qt, acessibilidade e tratamento de telas HiDPI. O usuário sente que faltam bindings de qualidade para linguagens além de C++ e Python, e comentou que, com bindings e ferramentas melhores, ele seria mais popular.
A nova funcionalidade de hot reloading foi considerada impressionante, e foi mencionado que esperar por atualizações de UI em outros frameworks web Rust era um grande problema.