Prochain Live dĂ©couverte : toutes nos formations web & app, le jeudi 21 novembre Ă  12h (je m’inscris)

6 raisons d’adopter Rust pour le web 🩀

01/10/2024
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 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.

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

      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 ?