Cours de programmation séquentielle
Introduction générale
Orestis Malaspinas
Pourquoi Rust?
Un peu d’amour
- Langage le plus aimé sur stackoverflow en 2016, 2017, et 2018.
![]()
Une mascotte super mignonne
Ferris
Historique
Une brève histoire du Rust
- Créé comme projet personnel par Graydon Hoare chez Mozilla en 2006.
- Financé par Mozilla dès 2010.
- Rendu public la première fois en 2012 (version 0.4).
- Orientation vers la programmation système.
- Première version stable (1.0) en 2015 (3 ans cette année).
- La très grande majorité des fonctionnalités du langages ont été retirées.
- Stabilisation de fonctionnalités tous les 6 semaines.
- Version stable actuelle 1.29.
Développement de Rust
Nouvelles fonctionalités
- Le développement est fait via des “Request for Comments” (RFC)
- Processus transparent (Pull requests sur github).
- Grande contribution de la communauté.
- Mais décision finale du comité directeur.
Méthode de publication
- Développement dans Nightly.
- Toutes les 6 semaines la version nightly passe en bêta pour tests.
- Toutes les 6 semaines les fonctionnalités sont stabilisées.
- Rétrocompatibilité assurée.
- Pas de grandes révolutions, mais plutôt des petites améliorations successives.
Projets basés sur Rust
- Firefox:
- Servo (moteur parallèle de navigateur en collaboration avec Samsung)
- Quantum (Moteur du navigateur de Firefox)
- Gnome (en remplacement du C).
- Dropbox.
- Cargo.
- Tor (en phase de tests).
- Redox (microkernel).
- https://www.rust-lang.org/production
Concepts de base
Un compilateur très pointilleux.
Sûreté
- Fortement typé.
- Pas d’accès mémoire illégal.
- La désallocation est automatique.
- Les fuites de mémoires sont donc TRÈS difficile à faire.
Concurrence
- Concurrency without fear.
- Le système de type empêche un accès concurrent à des données.
- La synchronisation des données doit être explicitement faite.
- Détection si l’accès asynchrone est sûr à la compilation.
- Protection contre les accès concurrents.
Rapidité
- Les conditions de sécurité sont gérées à la compilation (pas de coût à l’exécution).
- Le compilateur est basé sur la LLVM.
- Abstractions à coût nul.
- On paie pour ce qu’on utilise seulement.
On peut contourner les règles
- Le compilateur a des règles très strictes…
- … mais il est possible de contourner les règles.
- Syntaxe spéciale pour autoriser les comportement potentiellement dangereux (
unsafe
).
- Un guide pour bien vivre dangereusement https://doc.rust-lang.org/nomicon/.