AccueilActualités informatiqueLangage de programmation : Rust 1.57 - Don't Panic !

Langage de programmation : Rust 1.57 – Don’t Panic !

L’équipe Rust a publié comme prévu la version 1.57 du langage de programmation, la deuxième version après le coup d’envoi de la nouvelle édition Rust 2021 fin octobre. Les principales nouveautés concernent la gestion des paquets Cargo et, pour la première fois, la stabilisation du panic!-ainsi que la stabilisation de plusieurs API, notamment l’interface de réservation de la mémoire de fond.

L’API try_reserve doit permettre aux appelants d’utiliser la mémoire d’arrière-plan pour les types Vec, String, HashMap, HashSetv et VecDeque faillible (fallible). Cela signifie que Rust n’interrompt pas le processus si l’allocateur gobal échoue. Cependant, selon l’entrée du blog, Rust ne garantit pas que le noyau alloue effectivement la mémoire renvoyée.

Une autre nouveauté concerne le gestionnaire de paquets Rust Cargo, qui ne proposait jusqu’à présent que les quatre profils dev, release, test et bench n’existait pas. Désormais, Cargo prend également en charge n’importe quel profil désigné. Les profils personnalisés doivent être spécifiés lors de leur création et héritent des paramètres par défaut. Les artefacts créés avec ces profils sont placés dans des répertoires séparés.

Sommaire

Le panic!-ne fonctionnait pas dans les versions précédentes de Rust dans des contextes compilés tels que const fn a été utilisé. Depuis Rust 1.57, elle est stable et d’autres API de la bibliothèque standard (comme par exemple assert!) sont désormais utilisées dans const. Cependant, l’infrastructure de formatage n’est pas encore entièrement prête, comme le note le blog.

Concrètement, cela signifie que les développeurs doivent utiliser la macro panic! soit avec une chaîne statique, soit avec une seule chaîne interpolée. &strg-qui doit obligatoirement être appelée entre accolades. {} doit être utilisée : panic!("...") ou panic!"{}", a. Les éditeurs qualifient la stabilisation de la macro de « minimale », mais laissent entrevoir la possibilité de développer cette forme de soutien à l’avenir.

Il est prévu que la stabilisation effectuée permette déjà des assertions au moment de la compilation, par exemple pour vérifier la taille d’un type :

const _: () = assert!(std::mem::size_of::<u64>() == 8);
const _: () = assert!(std::mem::size_of::<u8>() == 1);

Comme les changements d’une édition à l’autre sont plutôt modérés, l’équipe Rust s’était déjà prononcée contre le passage à une nouvelle version principale lors du premier saut d’édition en 2018. Un article sur Mozilla Hacks de 2018 explique les différences entre les éditions et les versions principales.

Lire aussi

D’autres changements ainsi qu’une liste de toutes les APIs stabilisées sont disponibles dans le blog de la version actuelle, toutes les nouveautés peuvent être trouvées dans les notes de la version 1.57 de Rust. Comme d’habitude, les développeurs qui ont déjà installé Rust peuvent télécharger la dernière version via le lien suivant rustup update stable pour le télécharger. Pour les novices, l’outil rustup est disponible séparément sur la page de téléchargement.

Plus d'articles