Le langage
Rust est relativement récent puisque sa première version
considérée comme stable est apparue en 2015.
Il a été conçu pour aborder les mêmes catégories de réalisations que les
langages
C
et
C++ :
la
programmation
système.
Puisque
Rust est bien plus récent que ces langages historiques
La langage C++ a toutefois bénéficié d'un énorme travail de
modernisation, notamment depuis sa version de 2011, à tel point
qu'il a maintenant beaucoup de principes en commun avec Rust.
Cependant, le fait que C++ moderne soit toujours compatible avec
ses versions antérieures ne facilite pas l'adoption systématique
de ses améliorations récentes.
,
ses concepteurs bénéficient à la fois du recul qui permet d'en mesurer
les défauts et de l'éclairage des pratiques et outils plus modernes.
Rust garde des langages
C et
C++ un principe essentiel :
ne
pas introduire d'abstractions qui impliqueraient une surconsommation de
ressources (calcul, mémoire...) supérieure au strict nécessaire pour la
réalisation du traitement voulu.
Pour le constater, voici des sites qui comparent l'efficacité de langages
de programmation courants :
Il est très important de noter que le soin apporté aux performances
des solutions informatiques va bien au delà d'un simple gain de temps
observable lors de l'exécution ; cela se traduit systématiquement
par
des gains substantiels sur les consommations de ressources
matérielles et énergétiques
L'introduction de la présentation
“Efficiency with Algorithms,
Performance with Data Structures” par Chandler Carruth à la conférence
CppCon 2014 illustre très clairement le rôle de l'efficacité du code
dans le domaine de la maîtrise de la dépense énergétique liée aux
traitements calculatoires.
Malheureusement, un
effet-rebond
de cette efficacité tient dans le fait que
Rust est également
considéré comme
un
outil de choix pour les crypto-monnaies et parfois même comme
un bon
argument pour leur green-washing...
.
Là où
Rust apporte une différence fondamentale avec les langages
C et
C++, c'est sur le contrôle de la cohérence de l'accès à la mémoire.
Il est reproché à ces langages de permettre d'accéder par inadvertance à des
données inexistantes et de nécessiter beaucoup d'attention pour s'assurer
de la cohérence de ces accès
La situation s'est considérablement améliorée avec C++ moderne,
mais il faut un niveau de maîtrise suffisant pour ne pas tomber
dans la facilité d'une formulation maladroite.
.
D'autres langages ne font que contourner partiellement cette difficulté en
imposant un coûteux choix d'organisation des données par l'utilisation
systématique d'allocation dynamique, d'indirections et d'un
ramasse-miettes.
Mais même lorsque les données accédées sont bien existantes, leur
exploitation imprudente peut introduire des incohérences : par exemple
l'accès au contenu d'une séquence alors qu'elle est en cours de
modification
Et là, les coûteux mécanismes de contournement évoqués plus haut
n'y peuvent rien !
.
Rust introduit alors un principe essentiel : il impose une
distinction explicite entre les notions de
valeur et de
référence, une
gestion déterministe de la durée de vie des données, une explicitation des
accès aux données en consultation ou en modification.
Avec ces précautions,
le contrôle de la cohérence de l'ensemble est
entièrement à la charge du compilateur, sans aucun coût à l'exécution,
et permet de garantir
formellement la sécurité des accès aux données.
Le niveau très fin de la maîtrise qu'il offre sur le matériel qui exécute
les programmes permet d'utiliser
Rust très efficacement dans
une grande
variété de domaines où les performances et la sécurité sont cruciales.
Il commence même à trouver sa place dans des systèmes d'exploitation très
largement utilisés
(
Windows,
Linux,
Android,
FreeBSD)
et dans les
systèmes embarqués.
Il se positionne également comme un acteur de choix dans la technologie
WebAssembly.
Et même
l'administration
des États Unis d'Amérique encourage l'utilisation de Rust.
De manière plus anecdotique, ce langage connaît un succès d'estime et de
popularité : tout le monde en parle même si peu encore le pratiquent.
Il peut alors être bien vu, notamment pour de futures ingénieures ou futurs
ingénieurs, d'afficher une certaine expérience à son sujet.
Si vous êtes intéressé par l'activité autour de
Rust,
ce site en propose un résumé
hebdomadaire.