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