Le langage de programmation à usage général Rust 1.85, fondé par le projet Mozilla mais désormais développé sous les auspices de l'organisation indépendante à but non lucratif Rust Foundation, est sorti. En plus du numéro de version habituel 1.85, la version est baptisée Rust 2024, ce qui marque la stabilisation des changements proposés au cours des trois dernières années. La version linguistique « Rust 2024 » servira de base aux ajouts de fonctionnalités au cours des trois prochaines années, de la même manière que la version Rust 2021 a servi de base au développement du langage au cours des trois dernières années.
Pour maintenir la compatibilité, les développeurs peuvent utiliser les étiquettes « 2015 », « 2018 », « 2021 » et « 2024 » dans leurs programmes pour lier leurs programmes à des tranches de l'état du langage correspondant à leurs éditions Rust choisies. Les éditions ont été introduites pour séparer les modifications incompatibles et sont configurées dans les métadonnées du package cargo via le champ « édition » dans la section « [package] ».
Par exemple, l'édition 2021 inclut des fonctionnalités stabilisées à la fin de 2021 et couvre tous les changements ultérieurs qui ne rompent pas la compatibilité. La version 2024 inclut également des fonctionnalités incompatibles proposées dans la version 1.85 actuelle et approuvées pour une implémentation future. Outre la langue elle-même, les éditeurs prennent également en compte l’état des outils et de la documentation. La commande « cargo fix » peut être utilisée pour adapter automatiquement le code à une nouvelle révision de langue.
Les principales incompatibilités corrigées dans Rust 2024 sont :
- Comportement modifié lors de la capture de paramètres dans « impl Trait » sauf si la nouvelle syntaxe « use<..> » est utilisée pour spécifier des informations de type masquées. Dans Rust 2024, à moins que « use<..> » ne soit utilisé, tous les paramètres dans la portée sont implicitement capturés. Si vous devez limiter la capture de paramètres, vous devez utiliser « use<..> », par exemple, « impl Trait + use
Source: opennet.ru
