- Lorsqu’on développe pour le web avec Rust, l’absence d’un framework comparable à Django oblige à faire beaucoup de choses soi-même
- Pour tirer parti des atouts de Rust — son système de types, ses performances et ses temps de compilation — il faut un framework qui simplifie le développement web
Fonctionnalités nécessaires
- Routage/gestionnaires : il faut une fonctionnalité permettant de relier les requêtes aux gestionnaires qui les traiteront
- Templates : il faut pouvoir générer du contenu comme du HTML et du JSON
- Service de fichiers statiques : il faut une fonctionnalité pour servir des ressources comme des fichiers CSS
- Connexion : une fonctionnalité de connexion est nécessaire pour les applications multi-utilisateurs
- Gestion des autorisations : il faut pouvoir gérer les droits d’accès selon les utilisateurs
- Interface de base de données : il faut une fonctionnalité pour stocker et gérer les données
- Outils d’administration : il faut des outils prenant en charge les tâches d’administration de base
- WebSocket : une fonctionnalité WebSocket est nécessaire pour le transfert de données en temps réel
- Hot reloading : il faut une fonctionnalité qui applique immédiatement les changements de code
Fonctionnalités supplémentaires nécessaires
- Tâches en arrière-plan : il faut une fonctionnalité permettant d’exécuter des tâches selon un planning
- Monitoring/observabilité : il faut des fonctionnalités pour surveiller l’état du système
- Cache : il faut une fonctionnalité de cache pour améliorer les performances
- E-mails et notifications : il faut des notifications prenant en charge des fonctions comme la réinitialisation de mot de passe
- Outils de déploiement : il faut une méthode de déploiement cohérente
- Bundling CSS/JS : il faut une fonctionnalité permettant de gérer efficacement les fichiers CSS et JS
Écosystème existant
- Frameworks web : il existe des frameworks offrant un minimum de fonctionnalités, comme actix-web et axum
- Collection de bibliothèques : il existe diverses bibliothèques pour les templates, la connexion, la gestion des autorisations, etc., mais il manque une solution intégrée
Nouveau toolkit web
- nicole's web toolkit (newt) : un toolkit web intégrant diverses fonctionnalités est en cours de développement
- Objectif : permettre de démarrer rapidement une nouvelle application web
- Plan : fournir une solution intégrée à partir de briques existantes
Résumé de GN⁺
- Le texte souligne la nécessité d’un framework web intégré pour faciliter le développement web avec Rust
- Il présente une tentative de dépasser les limites des frameworks web et bibliothèques existants
- Avec nicole's web toolkit (newt), l’objectif est d’améliorer l’expérience développeur en intégrant diverses fonctionnalités
- La tentative d’introduire dans l’écosystème Rust les avantages d’un framework comme Django mérite l’attention
- Parmi les autres projets offrant des fonctionnalités similaires, on trouve actix-web et axum
1 commentaires
Avis Hacker News
Avis d’une personne qui aime créer des choses amusantes avec un minimum d’effort en utilisant Rust. Selon elle, Rust excelle en efficacité et en gestion mémoire, mais Go ou Django sont plus adaptés au développement web
Rust apporte de la sûreté, ce qui permet aux développeurs de faire moins d’erreurs, avec l’avantage de pouvoir écrire du code même avec des outils simples comme Notepad
En tant que framework web, Rocket serait le meilleur framework pour les « développeurs paresseux »
En tirant parti du pattern matching de Rust, il n’y aurait pas besoin de routeur, et l’authentification ne serait pas un problème du langage ou du framework
Les outils CSS/JS ne conviendraient pas aux frameworks frontend en Rust, mais Rust serait suffisamment mature aussi pour le web frontend
Surprise que le framework Rocket n’ait pas été mentionné, celui-ci visant justement à être un framework « batteries incluses »
Faire du développement web en Rust est tout à fait acceptable, mais il y aurait des problèmes de concurrence, et le choix d’une bibliothèque de composants serait difficile
L’usage de Flutter améliorerait l’UX, et son intégration avec Rust serait simple, ce qui donne satisfaction
Flutter ne respecte pas le DOM, mais reste attrayant car il permet de créer facilement une UX déployable partout
Poem serait similaire à FastAPI, mais nécessiterait beaucoup de boilerplate dans la configuration initiale
Le terme « paresseux » est employé au sens où l’on attend d’un framework web qu’il prenne en charge les tâches courantes, même si, en pratique, cela demande toujours beaucoup de travail
Des projets comme loco-rs, poem et rocket offriraient déjà une expérience « batteries incluses », guidée par une CLI
F# offrirait un système de types et des outils similaires à Rust, mais avec moins de complexité pour l’asynchrone et la gestion mémoire
L’auteur souhaiterait un framework de type Spring Boot pour Rust