BT

Diffuser les Connaissances et l'Innovation dans le Développement Logiciel d'Entreprise

Contribuez

Sujets

Sélectionner votre région

Accueil InfoQ Actualités Rust approche de la version finale

Rust approche de la version finale

Rust, le langage de programmation système développé par Mozilla, approche d'une version 1.0 avec la beta qui devrait sortir d'ici la fin de l'année, d'après une annonce sur le blog officiel, créé pour l'occasion. C'est une release importante parce que les fonctionnalités déjà implémentées et la syntaxe du langage ne devraient plus changer après. Cela signifie que le code Rust écrit à partir de cette 1.0 pourra toujours être compilé par les prochaines versions du compilateur. La stabilité du langage est primordiale pour le développement d'un écosystème de bibliothèques.

Rust est un langage de programmation système qui a pour but d'être sûr au niveau de la gestion mémoire et de la concurrence, tout en proposant à terme le même niveau de performance que du C/C++ et la possibilité d'être bas niveau. Il propose aussi des concepts venant des langages fonctionnels comme le pattern matching, les closures etc. Le nom "Rust" (la rouille), a été choisi pour marquer le fait que le langage n'a pas été conçu pour embarquer le plus possible de fonctionnalités et de paradigmes comme c'est souvent le cas pour les langages modernes, mais plutôt pour se baser sur des concepts éprouvés, et c'est le cas en pratique. Sa caractéristique la plus intéressante est sa gestion de la mémoire.

Rust est basé sur les principes de propriété (ownership) et d'emprunt (borrowing) des pointeurs. Ces principes permettent au développeur de ne pas s'occuper de la libération de la mémoire. de garantir la libération de la mémoire quand elle n'est plus utilisée mais aussi d'éviter le double free. Le système de concurrence de Rust est aussi basé sur ces principes de propriété et d'emprunt. En effet, une référence peut être soit copiée, soit transmise à une autre tâche, dans ce cas, elle ne sera plus disponible dans la suite de la fonction, mais un même espace mémoire ne peux pas être partagé en écriture. Rust ne force pas non plus un seul mode de gestion de la mémoire. Il permet d'utiliser des box pour laisser le compilateur gérer la propriété et la libération, ce qui est le mode recommandé par défaut. Il est aussi possible d'utiliser des compteurs de références pour encapsuler une donnée, avec Rc ou Arc, sa variante atomique qui supporte le multithreading ou des heap, utilisant un garbage collector, locales à une tâche, ce qui permet d'éviter les pauses stop-the-world.

Le langage est aussi sûr par défaut, c'est à dire qu'il ne permet pas la manipulation directe et arbitraire de la mémoire à n'importe quel point du programme. A la place, il est possible de prendre le contrôle explicitement dans un bloc de code marqué comme unsafe. La sécurité se retrouve aussi dans le fait que les données sont immuables par défaut et l'absence du concept de null. Ces caractéristiques vont permettre aux développeurs de se concentrer sur des parties précises du code pendant le debug plutôt que d'avoir un océan de lignes de code à inspecter.

Une dernière caractéristique intéressante est la qualité des messages émis par le compilateur. Si vous avez apprécié ceux de Git, ceux de Rust sont du même acabit.

La version 1.0 n'est que le point de départ pour que le langage se popularise, mais elle marquera la fin de la longue incubation du langage. Pour finir, la présentation d'un langage ne serait pas complète sans un Hello, world!, le voici, un poil amélioré :

fn main() {
    let hello_world = "Hello, World !";
    println!("{}", hello_world);
}

Evaluer cet article

Pertinence
Style

Contenu Éducatif

BT