The Rust Programming
Language
Barthelemy Romain
Sommaire
• Présentation du langage
• Sécurité et contrôle en programmation
• Rust: les performances alliées à la sécurité
2
Origines
• Langage développé par Mozilla pour la refonte de son navigateur
• Ancien moteur de rendu:
• Nouveau moteur en Rust: Servo en partenariat avec Samsung
Présentation du langage 3
Langage multi-paradigme
• Syntaxe proche du C++
• Fonctionnel, impératif, orienté objet, programmation concurrente
• Développé pour être sûr et efficace
Présentation du langage 4
Sécurité et contrôle en programmation
• Ces aspects de programmation sont normalement opposés
• Exemples de langages
• Contrôle: C
• Sécurité: Java
Sécurité et contrôle en programmation 5
Programmation contrôlée: C
• Contrôle sur la mémoire et les calculs effectués. Résultat: code optimisé
• Dangers: segfaults, bugs en programmation multi-threadée, etc…
Sécurité et contrôle en programmation 6
Programmation plus sécurisée: Java
• Bibliothèques de code sûr: programmation de haut niveau
• Avantages: moins de confusions et donc d’erreurs
• Inconvénients: les outils fournis sont plus complexes que ce dont il y a besoin
Sécurité et contrôle en programmation 7
Une alliance des deux possible?
• A priori impossible: plus de contrôle = plus de libertés = moins de sécurité
• Rust est-il la solution?
Sécurité et contrôle en programmation 8
Principe
• Programmation de bas niveau comme avec C++
• Un compilateur interdisant les cas à risques
Rust: les performances alliées à la sécurité 9
Contrôle des accès mémoire
• Accès multiples à un pointeur + Modifications= DANGER
• L’écriture n’est possible que si personne ne lit ou écrit la variable, les lectures
parallèles sont possibles
• Le compilateur détecte et interdit les cas contraires.
• Exemple de code accepté:
Rust: les performances alliées à la sécurité 10
Programmation concurrente
• Accès multiples à un pointeur + Modifications
+ Absence d’ordonnancement = DANGER
• La solution précédente permet la programmation concurrente sans
problème d’accès mémoire
Rust: les performances alliées à la sécurité 11
Des moyens de contournements
• Si c’est absolument nécessaire et contrôlé en parallèle, il est possible de
définir des blocs « unsafe » moins contraints
Rust: les performances alliées à la sécurité 12
Conclusion
• Programmation efficace en toute sécurité
• Quelques contreparties
• Compilateur plus restrictif qu’avec C++
• Langage encore en cours de développement
• Peu d’IDE prenant Rust en charge
• Syntaxe changeante
13
Démonstration
14
Merci pour votre attention!
Des questions?
15
Références
• [Link]
• [Link]
• [Link]
• [Link]
16