Avant de penser Ă Rust pour le web viennent d’abord les langages haut-niveau (Python, JS, PHPâŠ) qui ont la part belle depuis ces derniĂšres dĂ©cennies. Dans les avantages qui reviennent souvent, on retrouve la facilitĂ© dâutilisation, le dĂ©veloppement rapide, lâĂ©cosystĂšme riche, la comptabilitĂ© entre les plateformes, et les vastes communautĂ©s actives sur ces sujets. Il est plus rare de tomber sur des applications Ă©crites en C ou C++ par exemple, de par la complexitĂ© des langages, mais aussi la volontĂ© de ne pas rĂ©inventer la roue en permanence. De plus, le web est un domaine qui Ă©volue trĂšs rapidement, et le dĂ©veloppement dâapplications web a donc besoin de souplesse. Rust vient bousculer tout ce petit monde car il combine Ă la fois les avantages des langages bas-niveau et haut-niveau. Est-ce le bon moment d’adopter Rust pour le web ?
Rust : un langage versatile
Rust est souvent assimilĂ© Ă un bon compromis entre langage bas-niveau et haut-niveau. Dans son plus simple apparat, Rust embarque des fonctionnalitĂ©s familiĂšres aux dĂ©veloppeurs de langages haut-niveau, telles quâun gestionnaire de paquets (Cargo), des abstractions (pattern matching, itĂ©rateurs, traitsâŠ), la sĂ»retĂ© (gestion de la mĂ©moire), ou encore la comptabilitĂ© cross-plateforme. Par exemple, un dĂ©veloppeur aguerri en JavaScript (et idĂ©alement TypeScript) perdra beaucoup moins ses repĂšres en passant sur Rust, quâen passant sur du C++.
En outre, Rust va se placer en directe concurrence avec les langages bas-niveau, car il permet de manipuler les ressources mĂ©moire et hardware sans intermĂ©diaire, et il est performant, car la plupart de ses abstractions nâont aucun coĂ»t supplĂ©mentaire en ressource.
Mais quâest-ce qui fait quâaujourdâhui, on peut lĂ©gitimement se questionner sur lâutilisation de Rust dans le cadre dâune application web ? Pour cela, reprenons les avantages de nos langages haut-niveau citĂ©s plus haut, et faisons un Ă©tat des lieux.
Est-ce facile d’utiliser Rust pour web ?
Cinq caractéristiques majeures de Rust font de lui un langage facile à utiliser :
-
- La syntaxe est familiÚre pour tous les développeurs venant des langages populaires tels que C++, JavaScript ou Python.
-
- Le typage est strict, ce qui permet entre autres de dĂ©tecter plus facilement les erreurs Ă la compilation. En outre, la gestion de mĂ©moire via le systĂšme dâownership en Rust, permet aussi de limiter les erreurs.
-
- Il dispose dâun gestionnaire de paquets, Cargo, qui permet Ă la fois de gĂ©rer les dĂ©pendances du projet, mais aussi de gĂ©rer le build, le testing et la gĂ©nĂ©ration de documentation.
-
- La documentation est riche, bien rédigée, et la communauté est attachée à garder ce langage propre et accessible.
DĂ©veloppement rapide
A lâinstar de ses concurrents haut-niveau, Rust dispose dâoutils qui permettent de dĂ©velopper et mĂȘme prototyper rapidement une application web tout en contenant la dette technique. Il nâest pas nĂ©cessaire de gĂ©rer directement des sockets TCP ou des cycles de requĂȘtes HTTP.
GrĂące aux avancĂ©es de Web Assembly, on peut mĂȘme aujourdâhui envisager de dĂ©velopper un frontend en Rust, mĂȘme si certaines fonctionnalitĂ©s restent encore Ă implĂ©menter.
Rust bĂ©nĂ©ficie d’un Ă©cosystĂšme riche
Rust permet aujourdâhui dâaccomplir des tĂąches web Ă Ă©galitĂ© avec des langages plus anciens, car son Ă©cosystĂšme progresse trĂšs rapidement. Cependant, il est possible que certains sujets soient plus dĂ©licats Ă implĂ©menter ou nĂ©cessitent davantage de recherche.
Voici un listing non exhaustif qui permet de se rendre compte, en un clin d’oeil, quâil est possible d’utiliser rapidement Rust pour le web :
-
- Frameworks web backend (Actix-web, AxumâŠ) & frontend (Yew, LeptosâŠ)
-
- Interfaçage avec de nombreuses bases de donnĂ©es, y compris via des ORM (Diesel, SeaORM, SQLxâŠ)
-
- Runtimes asynchrones (Tokio, async-stdâŠ)
-
- Moteurs de rendu de templates (Tera, AskamaâŠ)
-
- Sérialisation / désérialisation (exemple : JSON avec serde)
Pour complĂ©ter, on peut se rendre sur le site Are We Web Yet ? qui permet de suivre lâĂ©tat des diffĂ©rentes thĂ©matiques liĂ©es Ă Rust pour le dĂ©veloppement web.
Compatibilité entre les plateformes
Avec des outils comme Tauri, utiliser Rust pour le web peut mettre dâaccord tout le monde sur le sujet du cross-plateforme. Tauri permet aux dĂ©veloppeurs d’utiliser les technologies web pour crĂ©er des applications de bureau qui fonctionnent de maniĂšre transparente sur diffĂ©rentes plateformes, telles que Windows, macOS et Linux. Câest aussi rendu possible grĂące Ă WebAssembly, qui permet de standardiser le dĂ©veloppement dâapplications web dans des langages autres que JavaScript. En outre, il est Ă noter que Rust a Ă©tĂ© conçu depuis le dĂ©part pour ĂȘtre cross-plateforme, et Ă©liminer le plus possible les barriĂšres entre les diffĂ©rentes plateformes pour faciliter la vie du dĂ©veloppeur.
La communauté Rust est-elle active ?
Il nâest pas nĂ©cessaire de rappeler que Rust est depuis de nombreuses annĂ©es un langage privilĂ©giĂ© dans les enquĂȘtes menĂ©es auprĂšs des dĂ©veloppeurs. Sa notoriĂ©tĂ© ne cesse de grandir et a permis aujourdâhui dâavoir densifiĂ© lâĂ©cosystĂšme dans de nombreux domaines, et pas que dans le web.
Il est aujourdâhui relativement simple de sâembarquer dans la communautĂ© Rust, il y a de plus en plus de ressources disponibles, les dĂ©pĂŽts de projets sont toujours bien documentĂ©s et agrĂ©mentĂ©s dâexemples, et quasiment chaque librairie populaire dispose dâun outil tel que Discord dans lequel on peut librement Ă©changer. Il est vrai que lâinformation est parfois plus difficile Ă glaner que dans dâautres langages, ce qui fait quâaujourdâhui Rust est tout de mĂȘme plus recommandable Ă des dĂ©veloppeurs expĂ©rimentĂ©s quâĂ des dĂ©butants, car il peut ĂȘtre dĂ©routant.
Quelques exemples de projets boostés par Rust
-
- Discord a intégré Rust à son infrastructure Web, ce qui lui a permis de réduire considérablement les ressources utilisées sur les serveurs ;
-
- AWS amĂ©liore son infrastructure grĂące Ă Rust, et permet aux datacenters dâĂ©conomiser de lâĂ©nergie.
En conclusion, on peut estimer qu’utiliser Rust pour le web est une idĂ©e pertinente, il est dâailleurs dĂ©jĂ utilisĂ© depuis de nombreuses annĂ©es dans ce domaine, et a permis de faire des percĂ©es significatives, notamment en termes de performances mais aussi dâĂ©cologie, puisquâil consomme drastiquement moins de ressources que JavaScript, par exemple.
Il y a fort Ă parier que vos projets actuels sont transfĂ©rables vers lâenvironnement Rust, et donc pourquoi ne pas lâenvisager pour vos projets Ă venir ?