Rust (Mozilla)

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Page d'aide sur l'homonymie Pour les articles homonymes, voir Rust.
Rust
Apparu en 2010
Auteur Graydon Hoare
Développeurs Mozilla
Paradigmes impératif, Objet, fonctionnel, concurrent
Typage Fort, Statique
Influencé par C++, Erlang, Haskell, Scala, OCaml...
Système d'exploitation Multiplate-forme
Licence MIT / Apache 2
Site web rust-lang.org

Rust est un langage de programmation compilé multi-paradigme expérimental développé par Mozilla Research[1]. Il a été conçu pour être « un langage sécurisé, concurrent, pratique »[2],[3], supportant les styles de programmation purement fonctionnelle, modèle d'acteur, procédurale et orientée objet.

Le langage s'est développé à partir d'un projet personnel du développeur en chef Graydon Hoare, qui commença à travailler dessus en 2006. Son employeur Mozilla commença sa participation en 2009[4] et révéla officiellement leurs travaux pour la première fois en 2010[5]. La même année, le projet passa du compilateur initialement utilisé (écrit en OCaml) au compilateur auto-hébergé écrit en Rust[6]. Ce compilateur, connu sous le nom de rustc, s'est compilé avec succès en 2011[7]. Le compilateur auto-hébergé utilise LLVM pour son Backend.

La première version alpha numérotée du compilateur Rust apparait en janvier 2012[8]. La version actuelle est la version 0.11, sortie en juillet 2014[9]. Le développement de Rust est cependant si rapide qu'il est déconseillé de se fier aux versions stables.

Du fait de la politique de Mozilla[10], Rust est entièrement développé de façon ouverte (les ingénieurs de Mozilla Research publient leurs idées et les décisions prises lors des meetings) et sollicite les remarques et contributions de la communauté. La conception du langage est graduellement améliorée au travers des retours de l'équipe travaillant sur le moteur de rendu Servo[11] et de façon pragmatique lors de l'écriture du compilateur. Bien que le projet soit financé par Mozilla et Samsung, la majorité des contributions proviennent de la communauté.

Description[modifier | modifier le code]

Le but de Rust est de devenir un langage efficace pour la création de larges logiciels clients et serveurs reposant sur l'Internet. Cet objectif a mené à l'intégration de fonctionnalités accentuant sur la sécurité, le contrôle de la mémoire et la concurrence. Les performances de code Rust considéré comme sécuritaire tendent à être moins grande que du code C++ si lesdites performances sont les seules considérations. Toutefois, lorsque l'on fait la comparaison avec un code C++ qui procède manuellement à ces précautions, les performances sont comparables.

La syntaxe du langage est similaire à celle du C, étant constituée de blocs de code délimités par des accolades et de structures de contrôle comme if, else, while et for. Tous les mots-clés du C ne sont pas réservés par le langage, cependant, et certaines formes propres aux langages fonctionnels, comme les blocs match permettant le filtrage par motif, pourraient déconcerter les développeurs arrivant de langages strictement impératifs ou orientés-objets. Ainsi, malgré leur ressemblance syntaxique, Rust est sémantiquement différent du C ou du C++.

Le système a notamment été conçu pour garantir la désallocation de la mémoire. Il ne permet par exemple pas les pointeurs null ou les références à de la mémoire déjà désallouée. Les variables peuvent seulement être initialisés par un nombre limité de formes, requérant toutes que les variables soient initialisées avant leur utilisation. Un système de durée de vie et gel des pointeurs permet au compilateur de prévenir plusieurs types d'erreurs communes en C++, même lors de l'utilisation de pointeurs intelligents.

Points forts[modifier | modifier le code]

Rust repose sur des concepts connus et éprouvés (d'où le nom Rust, « la rouille » en anglais) et n'intègre pas de concepts nouveaux et non testés[12]. Ces concepts ont été empruntés à des langages de programmation existants et assemblés dans un seul langage[13] :

Rust est souvent décrit comme l'un des successeurs potentiels de C++ (avec D et, dans une moindre mesure, Go) notamment grâce à sa sûreté — c'est un objectif clairement affiché par les développeurs.

Exemples de code[modifier | modifier le code]

Le classique Hello World, valide avec la version 0.8 :

fn main()
{
    println!("Hello World!");
}

Références[modifier | modifier le code]

  1. (en) « The Rust Language », Lambda the Ultimate,‎ 2010-07-08 (consulté le 2010-10-30)
  2. (en) « The Rust Programming Language » (consulté le 2012-10-21)
  3. (en) « Doc language FAQ » (consulté le 2012-10-21)
  4. (en) « Project FAQ »,‎ 2010-09-14 (consulté le 2012-01-11)
  5. (en) « Future Tense »,‎ 2011-04-29 (consulté le 2012-02-06) : « At Mozilla Summit 2010, we launched Rust, a new programming language motivated by safety and concurrency for parallel hardware, the “manycore” future which is upon us. »
  6. (en) Graydon Hoare, « Rust Progress »,‎ 2010-10-02 (consulté le 2010-10-30)
  7. (en) Graydon Hoare, « [rust-dev] stage1/rustc builds »,‎ 2011-04-20 (consulté le 2011-04-20) : « After that last change fixing the logging scope context bug, looks like stage1/rustc builds. Just shy of midnight :) »
  8. (en) catamorphism, « Mozilla and the Rust community release Rust 0.1 (a strongly-typed systems programming language with a focus on memory safety and concurrency) »,‎ 2012-01-20 (consulté le 2012-02-06)
  9. « Rust Release Notes »
  10. (en) « The Mozilla Manifesto » (consulté le 2012-04-09)
  11. (en) Peter Bright, « Samsung teams up with Mozilla to build browser engine for multicore machines »,‎ 2013-04-03 (consulté le 2013-04-04)
  12. « Présentation de Rust sur Léa-Linux » (consulté le 2013-12-11)
  13. « Sortie de Rust 0.8 » (consulté le 2013-15-10)

Liens externes[modifier | modifier le code]