Si vous avez une version précédente de Rust installée via rustup, vous pouvez obtenir la version 1.71.0 avec :
$ rustup update stable
Si vous ne l'avez pas encore, vous pouvez obtenir rustupà partir de la page appropriée sur notre site web, et consulter les notes de version détaillées pour la 1.71.0 sur GitHub.
Si vous souhaitez nous aider en testant les futures versions, vous pouvez envisager de mettre à jour localement pour utiliser le canal beta (rustup default beta) ou le canal nightly (rustup default nightly). N'hésitez pas à nous signaler les bugs que vous pourriez rencontrer !
Ce qu'il y a dans la version 1.71.0 stable
C-unwind ABI
La version 1.71.0 stabilise l'ABI C-unwind (et d'autres variantes d'ABI suffixées par -unwind).
Le comportement en cas de déroulement non forcé (le cas typique) est spécifié dans ce tableau tiré du RFC qui a proposé cette fonctionnalité. En résumé :
Chaque ABI est en grande partie équivalente à la même ABI sans -unwind, sauf qu'avec -unwind, le comportement est défini pour être sûr lorsqu'une opération de déroulement (panic ou exception de style C++) franchit la limite de l'ABI. Pour panic=unwind, il s'agit d'un moyen valide de laisser les exceptions d'un langage dérouler la pile dans un autre langage sans mettre fin au processus (tant que l'exception est attrapée dans le même langage que celui d'où elle provient) ; pour panic=abort, le processus sera typiquement interrompu immédiatement.
Pour cette stabilisation initiale, aucune modification n'est apportée aux ABIs existantes (par exemple "C"), et le déroulement à travers elles reste un comportement non défini. Une prochaine version de Rust modifiera ces ABIs pour qu'ils correspondent au comportement spécifié dans le RFC comme la dernière partie de la stabilisation de cette fonctionnalité (généralement l'abandon à la frontière). Les utilisateurs sont encouragés à commencer à utiliser les nouvelles variantes de l'ABI unwind dans leur code afin de rester à l'épreuve du temps s'ils ont besoin de dérouler à travers la frontière de l'ABI.
Attributs de visualisation du débogueur
1.71.0 stabilise le support d'un nouvel attribut,
#[debug_visualizer(natvis_file = "...")] et #[debug_visualizer(gdb_script_file = "...")], qui permet d'incorporer des descriptions Natvis et des scripts GDB dans les bibliothèques Rust afin d'améliorer la sortie du débogueur lors de l'inspection des structures de données créées par ces bibliothèques. Rust lui-même a intégré des scripts similaires depuis un certain temps pour la bibliothèque standard, mais cette fonctionnalité permet aux auteurs de bibliothèques de fournir une expérience similaire aux utilisateurs finaux.
Liaison raw-dylib
Sur les plateformes Windows, Rust supporte maintenant l'utilisation de fonctions provenant de bibliothèques dynamiques sans avoir besoin que ces bibliothèques soient disponibles au moment de la compilation, en utilisant la nouvelle option kind="raw-dylib" pour #[link].
Cela évite de demander aux utilisateurs d'installer ces bibliothèques (ce qui est particulièrement difficile pour la compilation croisée), et évite d'avoir à fournir des versions stub des bibliothèques dans les crates pour les lier. Cela simplifie les crates qui fournissent des liens vers les bibliothèques Windows.
Rust prend également en charge la liaison aux symboles fournis par les DLL par ordinal plutôt que par symbole nommé, en utilisant le nouvel attribut #[link_ordinal].
Mise à jour vers musl 1.2
Comme annoncé précédemment, Rust 1.71 met à jour la version musl en 1.2.3. La plupart des utilisateurs ne devraient pas être affectés par ce changement.
Locaux de threads initialisés par des constantes
Rust 1.59.0 a stabilisé le support des threads locaux à initialisation const dans la bibliothèque standard, ce qui permet une génération de code plus optimale.
Cependant, jusqu'à présent, cette fonctionnalité était absente des notes de version et de la documentation. Notez que cette stabilisation ne fait pas de const { ... } une expression ou une syntaxe valide dans d'autres contextes ; il s'agit d'une fonctionnalité distincte et actuellement instable.
$ rustup update stable
Si vous ne l'avez pas encore, vous pouvez obtenir rustupà partir de la page appropriée sur notre site web, et consulter les notes de version détaillées pour la 1.71.0 sur GitHub.
Si vous souhaitez nous aider en testant les futures versions, vous pouvez envisager de mettre à jour localement pour utiliser le canal beta (rustup default beta) ou le canal nightly (rustup default nightly). N'hésitez pas à nous signaler les bugs que vous pourriez rencontrer !
Ce qu'il y a dans la version 1.71.0 stable
C-unwind ABI
La version 1.71.0 stabilise l'ABI C-unwind (et d'autres variantes d'ABI suffixées par -unwind).
Le comportement en cas de déroulement non forcé (le cas typique) est spécifié dans ce tableau tiré du RFC qui a proposé cette fonctionnalité. En résumé :
Chaque ABI est en grande partie équivalente à la même ABI sans -unwind, sauf qu'avec -unwind, le comportement est défini pour être sûr lorsqu'une opération de déroulement (panic ou exception de style C++) franchit la limite de l'ABI. Pour panic=unwind, il s'agit d'un moyen valide de laisser les exceptions d'un langage dérouler la pile dans un autre langage sans mettre fin au processus (tant que l'exception est attrapée dans le même langage que celui d'où elle provient) ; pour panic=abort, le processus sera typiquement interrompu immédiatement.
Pour cette stabilisation initiale, aucune modification n'est apportée aux ABIs existantes (par exemple "C"), et le déroulement à travers elles reste un comportement non défini. Une prochaine version de Rust modifiera ces ABIs pour qu'ils correspondent au comportement spécifié dans le RFC comme la dernière partie de la stabilisation de cette fonctionnalité (généralement l'abandon à la frontière). Les utilisateurs sont encouragés à commencer à utiliser les nouvelles variantes de l'ABI unwind dans leur code afin de rester à l'épreuve du temps s'ils ont besoin de dérouler à travers la frontière de l'ABI.
Attributs de visualisation du débogueur
1.71.0 stabilise le support d'un nouvel attribut,
#[debug_visualizer(natvis_file = "...")] et #[debug_visualizer(gdb_script_file = "...")], qui permet d'incorporer des descriptions Natvis et des scripts GDB dans les bibliothèques Rust afin d'améliorer la sortie du débogueur lors de l'inspection des structures de données créées par ces bibliothèques. Rust lui-même a intégré des scripts similaires depuis un certain temps pour la bibliothèque standard, mais cette fonctionnalité permet aux auteurs de bibliothèques de fournir une expérience similaire aux utilisateurs finaux.
Liaison raw-dylib
Sur les plateformes Windows, Rust supporte maintenant l'utilisation de fonctions provenant de bibliothèques dynamiques sans avoir besoin que ces bibliothèques soient disponibles au moment de la compilation, en utilisant la nouvelle option kind="raw-dylib" pour #[link].
Cela évite de demander aux utilisateurs d'installer ces bibliothèques (ce qui est particulièrement difficile pour la compilation croisée), et évite d'avoir à fournir des versions stub des bibliothèques dans les crates pour les lier. Cela simplifie les crates qui fournissent des liens vers les bibliothèques Windows.
Rust prend également en charge la liaison aux symboles fournis par les DLL par ordinal plutôt que par symbole nommé, en utilisant le nouvel attribut #[link_ordinal].
Mise à jour vers musl 1.2
Comme annoncé précédemment, Rust 1.71 met à jour la version musl en 1.2.3. La plupart des utilisateurs ne devraient pas être affectés par ce changement.
Locaux de threads initialisés par des constantes
Rust 1.59.0 a stabilisé le support des threads locaux à initialisation const dans la bibliothèque standard, ce qui permet une génération de code plus optimale.
Cependant, jusqu'à présent, cette fonctionnalité était absente des notes de version et de la documentation. Notez que cette stabilisation ne fait pas de const { ... } une expression ou une syntaxe valide dans d'autres contextes ; il s'agit d'une fonctionnalité distincte et actuellement instable.
Code : | Sélectionner tout |
1 2 3 4 5 | use std::cell::Cell; thread_local! { pub static FOO: Cell<u32> = const { Cell::new(1) }; } |
Source : Rust
Et vous ?
Qu'en pensez-vous ?
Voir aussi :
Rust, réalité et fiction : 5 leçons tirées de l'expérience Rust de Google en 2022, selon l'enquête de Lars Bergstrom et Kathy Brennan
Le langage Rust se dote d'un Conseil de direction suite aux plaintes de la communauté concernant des lacunes en matière de gouvernance, et la création d'un fork du langage par des protestataires
Rust 1.70.0, la nouvelle version du langage de programmation, est désormais disponible, et apporte plusieurs fonctionnalités stabilisées et une activation par défaut du protocole sparse de Cargo