La version 1.91 du langage de programmation Rust est disponible, ajoutant la prise en charge de niveau 1 pour la plateforme Windows ARM64, les avertissements de pointeurs bruts, et plus encoreLa version 1.91.0 du langage Rust est désormais disponible. Cette mise à jour inclut notamment la promotion de la cible aarch64-pc-windows-msvc au niveau de support Tier 1 (le plus élevé en matière de maintenance et de test), une nouvelle règle lint permettant d'alerter les développeurs lorsque des pointeurs bruts vers des variables locales sont renvoyés par des fonctions, ainsi que de nombreuses autres améliorations.
Rust est un langage de programmation polyvalent réputé pour l'importance qu'il accorde aux performances, à la sécurité des types, à la concurrence et à la sécurité de la mémoire. Il prend en charge plusieurs paradigmes de programmation et a été influencé par des concepts issus de la programmation fonctionnelle, notamment l'immuabilité, les fonctions d'ordre supérieur, les types de données algébriques et la correspondance de motifs. Rust prend également en charge la programmation orientée objet via des structures, des énumérations, des traits et des méthodes. Le langage est réputé pour garantir la sécurité de la mémoire sans ramasse-miettes conventionnel. À la place, les erreurs de sécurité de la mémoire et les conflits d'accès aux données sont évités grâce au « vérificateur d'emprunts », qui suit la durée de vie des objets référencés au moment de la compilation.
Rust 1.91 poursuit l'évolution du langage en mettant l'accent sur la facilité d'utilisation et la sécurité. Cette mise à jour fait passer la cible aarch64-pc-windows-msvc au niveau de support Tier 1, étendant ainsi le niveau le plus élevé de maintenance et de test de Rust aux développeurs utilisant des systèmes ARM 64 bits sous Windows.
Outre les améliorations apportées à la plateforme, Rust 1.91 introduit un nouveau lint d'avertissement par défaut qui alerte les développeurs lorsque des pointeurs bruts vers des variables locales sont renvoyés par des fonctions. Alors que le vérificateur d'emprunt de Rust empêche déjà le renvoi de références suspendues, ce lint traite les scénarios impliquant des pointeurs bruts, que le vérificateur ne suit pas.
aarch64-pc-windows-msvc est désormais une plateforme de niveau 1
Le compilateur Rust prend en charge une grande variété de cibles. Afin d'indiquer clairement le niveau de support de chaque cible, l'équipe Rust utilise un système de niveaux :
- Les cibles de niveau 3 sont techniquement prises en charge par le compilateur, mais aucune vérification n'est effectuée pour s'assurer que leur code se compile ou passe les tests, et aucun binaire précompilé n'est fourni dans le cadre des versions.
- Les cibles de niveau 2 sont garanties de fonctionner, et des binaires précompilés sont fournis. Toutefois, la suite de tests n'est pas exécutée sur ces plateformes : les binaires produits peuvent ne pas fonctionner ou contenir des bogues.
- Les cibles de niveau 1 offrent la garantie de prise en charge la plus élevée et la suite complète est exécutée sur ces plateformes pour chaque modification fusionnée dans le compilateur. Des binaires précompilés sont également disponibles.
Rust 1.91.0 fait passer la cible aarch64-pc-windows-msvc au niveau 1 de support, offrant ainsi les meilleures garanties aux utilisateurs de systèmes ARM 64 bits fonctionnant sous Windows.
Ajout d'un lint pour les pointeurs bruts suspendus vers des variables locales
Bien que la vérification des emprunts de Rust empêche le renvoi de références suspendues, elle ne suit pas les pointeurs bruts. Avec cette version, l'équipe Rust ajoute un lint par défaut pour les pointeurs bruts vers des variables locales renvoyées par des fonctions. Par exemple, un code tel que celui-ci :
| Code rust : | Sélectionner tout |
1 2 3 4 | fn f() -> *const u8 { let x = 0; &x } |
va maintenant produire un lint :
| Code rust : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | warning: a dangling pointer will be produced because the local variable `x` will be dropped --> src/lib.rs:3:5 | 1 | fn f() -> *const u8 { | --------- return type of the function is `*const u8` 2 | let x = 0; | - `x` is part the function and will be dropped at the end of the function 3 | &x | ^^ | = note: pointers do not have a lifetime; after returning, the `u8` will be deallocated at the end of the function because nothing is referencing it as far as the type system is concerned = note: `#[warn(dangling_pointers_from_locals)]` on by default |
A noter que le code ci-dessus n'est pas dangereux, car il n'effectue aucune opération dangereuse. Seule la déréférence du pointeur brut après le retour de la fonction serait dangereuse. Les notes de version indiquent que d'autres améliorations concernant la sécurité des pointeurs bruts et du code non sécurisé sont prévues dans les versions futures.
Par ailleurs, avec ces mises à jour majeures, Rust 1.91 apporte une gamme d'API nouvellement stabilisées, aidant les développeurs à accéder à davantage de fonctionnalités en toute confiance. Cette version intègre également d'autres améliorations et corrections mineures, contribuant à la stabilité globale du langage et à l'expérience utilisateur.
Si vous avez déjà installé une version antérieure de Rust via rustup, vous pouvez obtenir la version 1.91.0 avec :
| Code : | Sélectionner tout |
$ rustup update stable
Si vous ne l'avez pas encore, vous pouvez obtenir rustup à partir de la page appropriée du site web du langage.
Source : Rust 1.91.0
Et vous ?
Quel est votre avis sur le sujet ?
Trouvez-vous les nouveautés apportées par Rust 1.91.0 utiles et pertinentes ?Voir aussi :
L'équipe de développement du langage de programmation Rust annonce Rust 1.90 avec LLD comme éditeur de liens par défaut sur x86_64-unknown-linux-gnu
Rust 1.89 est désormais disponible et étend la prise en charge des plateformes x86 et x86/x86_64 avec de nouvelles instructions et fonctionnalités de processeur, dont des intrinsèques AVX-512 supplémentaires
Vous avez lu gratuitement 1 487 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.