API Hours – Retrouver sa disponibilité mentale sans devoir déconnecter (27/05/2024 à 18h) : inscrivez-vous !

6 raisons d’adopter Rust pour le web

2024-04-14
6 raisons d'adopter Rust pour le web

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 ?

wasm ferris oclock
Ferris, la mascotte de Rust, évoquant le chantier WebAssembly – https://www.rust-lang.org

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++.

code Typescript vs code Rust
Comparatif entre du code TypeScript et du code Rust, sur des technologies similaires.

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, 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.
Rust pour le web

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. 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 :

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

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 ?