3 pontos por GN⁺ 2024-10-07 | 1 comentários | Compartilhar no WhatsApp
  • Ao desenvolver para a web com Rust, existe o problema de não haver um framework como o Django, então é preciso fazer muito trabalho manualmente
  • Para aproveitar as vantagens do Rust, como sistema de tipos, desempenho e tempo de build, é necessário um framework que facilite o desenvolvimento web

Funcionalidades necessárias

  • Roteamento/handlers: é preciso uma funcionalidade que conecte as requisições aos handlers que vão processá-las
  • Templates: deve ser possível gerar conteúdos como HTML e JSON
  • Servir arquivos estáticos: é necessária uma funcionalidade para servir assets como arquivos CSS
  • Login: é necessária uma funcionalidade de login para apps com múltiplos usuários
  • Controle de permissões: deve ser possível gerenciar permissões de acesso por usuário
  • Interface com banco de dados: é necessária uma funcionalidade para armazenar e gerenciar dados
  • Ferramentas administrativas: são necessárias ferramentas que deem suporte a tarefas administrativas básicas
  • WebSockets: é necessária uma funcionalidade de WebSocket para transmissão de dados em tempo real
  • Hot reloading: é necessária uma funcionalidade que reflita imediatamente alterações no código

Funcionalidades adicionais necessárias

  • Tarefas em segundo plano: é necessária uma funcionalidade para executar tarefas conforme uma agenda
  • Monitoramento/observabilidade: é necessária uma funcionalidade para monitorar o estado do sistema
  • Cache: é necessária uma funcionalidade de cache para melhorar o desempenho
  • E-mail e notificações: é necessária uma funcionalidade de notificação para dar suporte a recursos como redefinição de senha
  • Ferramentas de deploy: é necessário um método de deploy consistente
  • Bundling de CSS/JS: é necessária uma funcionalidade para gerenciar arquivos CSS e JS com eficiência

Ecossistema existente

  • Frameworks web: existem frameworks com funcionalidades mínimas, como actix-web e axum
  • Conjunto de bibliotecas: existem várias bibliotecas para templates, login, controle de permissões etc., mas faltam soluções integradas

Novo toolkit web

  • nicole's web toolkit (newt): está em desenvolvimento um toolkit web que integra várias funcionalidades
  • Objetivo: dar suporte para iniciar rapidamente novos apps web
  • Plano: pretende oferecer uma solução integrada usando blocos de construção já existentes

Resumo do GN⁺

  • Enfatiza a necessidade de um framework web integrado para facilitar o desenvolvimento web com Rust
  • Apresenta uma tentativa de superar as limitações dos frameworks web e bibliotecas existentes
  • Busca melhorar a experiência do desenvolvedor integrando várias funcionalidades por meio do nicole's web toolkit (newt)
  • É uma tentativa digna de atenção de trazer para o ecossistema Rust as vantagens de frameworks como o Django
  • Outros projetos com funcionalidades parecidas incluem actix-web e axum

1 comentários

 
GN⁺ 2024-10-07
Comentários do Hacker News
  • Opinião de alguém que gosta de criar coisas divertidas com o mínimo de esforço usando Rust. Embora Rust tenha excelente eficiência e gerenciamento de memória, para desenvolvimento web Go ou Django seriam mais adequados

  • Rust oferece segurança, ajudando os desenvolvedores a cometer menos erros, e tem a vantagem de permitir escrever código até com ferramentas simples como o Notepad

  • Como framework web, a opinião é que Rocket é o melhor framework para um "desenvolvedor preguiçoso"

  • Aproveitando o recurso de pattern matching do Rust, não seria necessário um roteador, e autenticação não seria um problema da linguagem nem do framework

  • As ferramentas de CSS/JS não se encaixam bem em frameworks frontend em Rust, mas a opinião é que Rust já está maduro o suficiente também para web frontend

  • Houve surpresa por Rocket não ter sido mencionado, e a opinião é que Rocket tem como objetivo ser um framework "com baterias inclusas"

  • Fazer desenvolvimento web com Rust é viável, mas haveria problemas de concorrência, além de ser difícil escolher uma biblioteca de componentes

  • A pessoa está melhorando a UX com Flutter e está satisfeita porque a integração com Rust é fácil

  • Flutter não respeita o DOM, mas é atraente porque permite criar facilmente uma UX que pode ser implantada em qualquer lugar

  • Poem é semelhante ao FastAPI, mas a opinião é que a configuração inicial exige muito boilerplate

  • A expressão "preguiçoso" foi usada no sentido de querer que o framework web cuide das tarefas comuns, mas na prática ainda exigiria muito trabalho

  • Projetos como loco-rs, poem e rocket já oferecem uma experiência "com baterias inclusas", e a CLI guia esse processo

  • F# oferece um sistema de tipos e ferramentas semelhantes aos de Rust, mas com menos complexidade em processamento assíncrono e gerenciamento de memória

  • A opinião é que o autor quer um framework para Rust semelhante ao Spring Boot