I – Présentation et historique 

Non, cet article n’a pas vocation à aborder le célèbre jeu vidéo de survie ni même la méconnue mais néanmoins chaleureuse ville allemande de la région du Bade-Wurtemberg, mais plutôt le langage de programmation informatique : Rust !  

Quelle est son histoire ? Dans quel cas est-il pratique ? Comment en exploiter le plein potentiel ? Éléments de réponse dans cet article ! 

Rust est développé à l’origine en tant que projet personnel annexe par Graydon Hoare, un employé de Mozilla. Graydon présente son projet en 2009 à son employeur qui, séduit par l’idée,  décide aussitôt d’en faire un projet interne à part entière. 

S’il faut attendre 2015 pour voir émerger la première version 1.0, il ne faudra patienter qu’un an avant de voir Rust figurer parmi les langages les plus populaires chez les développeurs

L’année dernière, c’est le géant Microsoft qui a annoncé sérieusement envisager de migrer ses services d’administration système de C et C++ vers Rust. 

Avant de plonger plus en avant sur ce langage, n’hésitez pas à consulter nos autres expertises en développement web et applicatif !

Ce que veut être Rust 

Sûr ! Rust souhaite avant tout être un langage sécurisé, en évitant les défauts de segmentation notamment. 

Fiable ! La commande programmée doit s’exécuter. 

Productif ! Rust doit être en mesure de fournir des résultats rapidement pour répondre à des exigences de rendement élevées. 

Ce que ne veut PAS être Rust

Pas innovant. Étrange non ? Eh bien pas tellement, car qui dit innovation dit expérimentation, essais et tâtonnements, ce qui est à l’opposé de l’objectif de rentabilité de Rust ! Des solutions solides et qui ont fait leurs preuves, voilà l’objectif de Rust ! 

Pas maximaliste. Directement à l’essentiel ! En effet, l’approche minimaliste est cohérente avec la volonté de solidité de la solution. 

Pas dogmatique. On peut être rigide et quand même se remettre en question ! 

Pas universel. Eh oui, pour être très efficace, c’est mieux d’être très spécifique ! Mais cela se fait au prix de l’adaptabilité. 

II – Pour et Contre ? 

Alors, pourquoi l’utilisation de Rust est-elle particulièrement indiquée ? Et au contraire, y a-t-il des usages où il montre ses limites ? 

POUR !  

  • Nous en parlions plus haut, mais Rust est un gardien de mémoire terriblement efficace ! “Programmer en Rust, c’est prouver que l’attribution de la mémoire est quasi optimale !” , comme ont l’habitude de le dire nos développeurs. Le compilateur est un professeur intransigeant ! 
  • Parallélisme sans “Data Race”. C’est-à-dire que vous pouvez faire fonctionner divers programmes simultanément avec des ressources partagées sans qu’il y ait de conflit de priorité !
  • Des concepts de programmation éprouvés
  • Vient avec un certain nombre d’outils communautaires facilitant la vie du développeur, dont l’outil de gestion des dépendances Cargo !
  • Soutenue par Mozilla, la solution ne devrait pas disparaître du jour au lendemain ! 
  • Rust devrait être au centre de la stratégie de Microsoft pour remplacer les langages C et C++ pour la programmation système, afin de faire la chasse aux erreurs de segmentation. 

CONTRE ! 

  • Courbe d’apprentissage sévère ! Le compilateur est un professeur exigeant avec le développeur. Écueil majeur, la gestion de mémoire se fait via un mécanisme ingénieux de propriétés et autorisations avec des notions de prêtés/rendus qui sont difficiles à maîtriser. C’est pourtant cette propriété majeure qui fait toute la valeur ajoutée de ce langage.
  • Malgré son âge, Rust ne dispose pas encore d’une réserve de librairies conséquentes. 
  • Rust ne dispose pas (pour l’instant) de framework de référence ! Ceux qui existent sont très orientés web. 
  • La programmation Asynchrone I/O n’est pas disponible nativement, elle est uniquement disponible via des librairies tierces.

Fait d’armes ! 

Gif de Morpheus invitant Néo à lui montrer son savoir-faire sur Rust
Gif de Morpheus invitant Néo à lui montrer son savoir-faire

Rust peut se targuer de quelques conquêtes importantes dans le secteur depuis son lancement ! 

Outre le soutien constant d’une solide maison mère (Mozilla Firefox quand même), Rust est utilisé ou en passe d’être adopté par des acteurs importants de l’informatique. 

Discord a ainsi basculé le chemin critique de son application de Go à Rust pour mettre fin à ses problèmes de gestion de mémoires qui amenaient à des “freeze” intempestifs très dommageables pour les utilisateurs du service. Rust a une gestion plus fine de la  mémoire vive. 

Les concepteurs de Fuchsia, un projet financé par Google visant à concevoir de nouveaux systèmes d’exploitation hors Linux et Windows pour l’IoT, étaient d’abord réticents à l’idée d’avoir recours à ce langage et l’autorisent désormais pour un usage en périphérie du noyau.  

Rust est plutôt un langage bas niveau pour concevoir les librairies fondamentales, comme cela a toujours été le cas pour C/C++. 

Non seulement il est possible d’interfacer Rust avec Windows, mais il semble que l’entreprise soit en train de développer son propre dialecte en interne.

Notons également que d’abord opposé à son adoption, Linus Torvalds semble de plus en plus favorable à l’incorporation de ce langage particulièrement robuste et à l’exécution très fiable dans le noyau linux. 

III – Rust vous sera utile… 

  • Si vous accordez une importance particulière à la fiabilité 
  • Quand vous avez besoin de mettre en place des processus parallèles et donc une bonne gestion de la concurrence
  • En cas de besoin d’un code compilé performant !
  • Si vous aimez écrire du code dans un style proche du paradigme fonctionnel (programmation concurrente). 

Alors, convaincu par ce langage innovant ? N’hésitez pas à nous contacter pour en savoir plus !