- Al desarrollar para la web con Rust, existe el problema de que no hay un framework como Django, así que hay que hacer muchas cosas manualmente
- Para aprovechar las ventajas de Rust, como su sistema de tipos, rendimiento y tiempos de compilación, se necesita un framework que facilite el desarrollo web
Funciones necesarias
- Enrutamiento/handlers: se necesita una función que conecte las solicitudes con los handlers que las procesarán
- Plantillas: debe poder generar contenido como HTML y JSON
- Entrega de archivos estáticos: se necesita una función para servir recursos como archivos CSS
- Inicio de sesión: se necesita autenticación para aplicaciones multiusuario
- Gestión de permisos: debe permitir administrar los permisos de acceso por usuario
- Interfaz de base de datos: se necesita una función para almacenar y administrar datos
- Herramientas de administración: se necesitan herramientas que apoyen tareas administrativas básicas
- WebSockets: se necesita soporte de WebSockets para la transmisión de datos en tiempo real
- Hot reloading: se necesita una función que refleje de inmediato los cambios en el código
Funciones adicionales necesarias
- Tareas en segundo plano: se necesita una función para ejecutar tareas según una programación
- Monitoreo/observabilidad: se necesita una función para monitorear el estado del sistema
- Caché: se necesita una función de caché para mejorar el rendimiento
- Correo electrónico y notificaciones: se necesita una función de notificaciones para soportar características como el restablecimiento de contraseña
- Herramientas de despliegue: se necesita una forma consistente de despliegue
- Empaquetado de CSS/JS: se necesita una función para gestionar eficazmente los archivos CSS y JS
Ecosistema existente
- Frameworks web: existen frameworks como actix-web y axum que ofrecen funcionalidades mínimas
- Conjunto de librerías: existen varias librerías para plantillas, autenticación, gestión de permisos, etc., pero faltan soluciones integradas
Nuevo toolkit web
- nicole's web toolkit (newt): se está desarrollando un toolkit web que integra varias funciones
- Objetivo: ayudar a iniciar rápidamente nuevas aplicaciones web
- Plan: ofrecer una solución integrada usando bloques de construcción existentes
Resumen de GN⁺
- Se destaca la necesidad de un framework web integrado que facilite el desarrollo web con Rust
- Se presenta un intento de superar las limitaciones de los frameworks web y librerías existentes
- Se busca mejorar la experiencia del desarrollador integrando diversas funciones a través de nicole's web toolkit (newt)
- Resulta llamativo el intento de incorporar al ecosistema de Rust las ventajas de un framework como Django
- Otros proyectos con funciones similares incluyen actix-web y axum
1 comentarios
Opinión de Hacker News
Opinión de alguien a quien le gusta crear cosas divertidas con el mínimo esfuerzo usando Rust. Considera que Rust destaca en eficiencia y gestión de memoria, pero que para desarrollo web Go o Django son más adecuados
Rust ofrece seguridad, lo que ayuda a los desarrolladores a cometer menos errores, y tiene la ventaja de que se puede escribir código incluso con herramientas simples como Notepad
Como framework web, considera que Rocket es el mejor framework para un "desarrollador perezoso"
Opina que, aprovechando la función de pattern matching de Rust, no hace falta un router, y que la autenticación no es un problema del lenguaje ni del framework
Las herramientas de CSS/JS no encajan bien con los frameworks frontend de Rust, pero considera que Rust ya es lo suficientemente maduro también en la web frontend
Le sorprendió que no se mencionara el framework Rocket, y opina que Rocket tiene como objetivo ser un framework de tipo "baterías incluidas"
Considera que hacer desarrollo web con Rust está bien, pero que hay problemas de concurrencia y que es difícil elegir una biblioteca de componentes
Está mejorando la UX usando Flutter, y está satisfecho porque la integración con Rust es sencilla
Flutter no respeta el DOM, pero le resulta atractivo porque permite crear fácilmente una UX que se puede desplegar en cualquier lugar
Opina que Poem es similar a FastAPI, pero requiere mucho boilerplate en la configuración inicial
La expresión "perezoso" se usó en el sentido de querer que el framework web se encargue de las tareas comunes, aunque en la práctica sigue habiendo mucho trabajo por hacer
Considera que proyectos como loco-rs, poem y rocket ya ofrecen una experiencia de tipo "baterías incluidas", y que el CLI guía ese proceso
Opina que F# ofrece un sistema de tipos y herramientas similares a Rust, pero con menos complejidad en el procesamiento asíncrono y la gestión de memoria
El autor quiere un framework para Rust similar a Spring Boot