11 pontos por GN⁺ 2024-12-13 | 3 comentários | Compartilhar no WhatsApp
  • 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

 
devsepnine 2024-12-17

Recentemente eu estava usando o tauri, acho que vou ter que experimentar esse também.

 
GN⁺ 2024-12-13
Comentários do Hacker News
  • Um usuário compartilhou sua experiência ao tentar a nova release: usou cargo install para criar o projeto e executou dx 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 pressionando v, 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.