The Rust Programming Language

Transcription

The Rust Programming Language
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
• https://air.mozilla.org/guaranteeing-memory-safety-in-rust/
• http://doc.rust-lang.org
• https://en.wikipedia.org/wiki/Rust_(programming_language)
• https://en.wikipedia.org/wiki/Servo_(layout_engine)
16

Documents pareils