IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Rust Discussion :

Rust 1.70.0, la nouvelle version du langage de programmation, est désormais disponible


Sujet :

Rust

  1. #1
    Chroniqueur Actualités
    Avatar de Anthony
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Novembre 2022
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Rédacteur technique

    Informations forums :
    Inscription : Novembre 2022
    Messages : 931
    Points : 15 365
    Points
    15 365
    Par défaut Rust 1.70.0, la nouvelle version du langage de programmation, est désormais disponible
    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

    L'équipe Rust est heureuse d'annoncer une nouvelle version de Rust, 1.70.0. Rust est un langage de programmation permettant à chacun de construire des logiciels fiables et efficaces.


    Si vous avez une version précédente de Rust installée via rustup, vous pouvez obtenir 1.70.0 avec :


    Si vous ne l'avez pas encore, vous pouvez obtenir rustup à partir de la page appropriée sur le site web, et consulter les notes de version détaillées pour 1.70.0 sur GitHub.

    Si vous souhaitez tester 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 à signaler les bugs que vous pourriez rencontrer !

    Ce qu'il y a dans la version 1.70.0 stable

    Sparse par défaut pour crates.io

    Le protocole "sparse" de Cargo est maintenant activé par défaut pour la lecture de l'index de crates.io. Cette fonctionnalité avait été stabilisée avec Rust 1.68.0, mais nécessitait toujours une configuration pour l'utiliser avec crates.io. Le plan annoncé était d'en faire la valeur par défaut dans la version 1.70.0, et c'est chose faite !

    Vous devriez constater une amélioration substantielle des performances lorsque vous récupérez des informations dans l'index de crates.io. Les utilisateurs situés derrière un pare-feu restrictif devront s'assurer que l'accès à https://index.crates.io est disponible. Si, pour une raison quelconque, vous devez conserver l'ancienne valeur par défaut d'utilisation de l'index git hébergé par GitHub, le paramètre de configuration registries.crates-io.protocol peut être utilisé pour changer la valeur par défaut.

    Un effet secondaire à noter à propos du changement de la méthode d'accès est que cela change également le chemin vers le cache des crates, donc les dépendances seront téléchargées à nouveau. Une fois que vous vous êtes pleinement engagé à utiliser le protocole sparse, vous pouvez vouloir effacer les anciens chemins $CARGO_HOME/registry/*/github.com-*.

    OnceCell et OnceLock

    Deux nouveaux types ont été stabilisés pour l'initialisation unique de données partagées, OnceCell et sa contrepartie thread-safe OnceLock. Ils peuvent être utilisés partout où la construction immédiate n'est pas souhaitée, et peut-être même pas possible, comme les données non-const dans les variables globales.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    use std::sync::OnceLock;
     
    static WINNER: OnceLock<&str> = OnceLock::new();
     
    fn main() {
        let winner = std::thread::scope(|s| {
            s.spawn(|| WINNER.set("thread"));
     
            std::thread::yield_now(); // give them a chance...
     
            WINNER.get_or_init(|| "main")
        });
     
        println!("{winner} wins!");
    }

    Des crates comme lazy_static et once_cell ont répondu à ce besoin dans le passé, mais maintenant ces blocs de construction font partie de la bibliothèque standard, portés à partir des modules unsync et sync de once_cell. Il y a encore d'autres méthodes qui peuvent être stabilisées dans le futur, ainsi que des types compagnons LazyCell et LazyLock qui stockent leur fonction d'initialisation, mais cette première étape de stabilisation devrait déjà couvrir de nombreux cas d'utilisation.

    IsTerminal

    Ce trait nouvellement stabilisé dispose d'une seule méthode, is_terminal, pour déterminer si un descripteur de fichier ou un handle donné représente un terminal ou un TTY. Il s'agit là d'un autre cas de normalisation d'une fonctionnalité qui existait dans des crates externes, comme atty et is-terminal, en utilisant la fonction isatty de la bibliothèque C sur les cibles Unix et une fonctionnalité similaire ailleurs. Un cas d'utilisation courant est que les programmes fassent la distinction entre l'exécution en mode script et en mode interactif, en présentant des couleurs ou même une interface utilisateur complète lorsqu'ils sont interactifs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    use std::io::{stdout, IsTerminal};
     
    fn main() {
        let use_color = stdout().is_terminal();
        // if so, add color codes to program output...
    }

    Niveaux nommés des informations de débogage

    L'option de compilation -Cdebuginfo ne supportait auparavant que les nombres 0..=2 pour des quantités croissantes d'informations de débogage, alors que Cargo propose par défaut 2 dans les profils dev et test et 0 dans les profils release et bench. Ces niveaux de débogage peuvent maintenant être définis par leur nom : "none" (0), "limited" (1), et "full" (2), ainsi que deux nouveaux niveaux, "line-directives-only" et "line-tables-only".

    Les documentations Cargo et rustc appelaient toutes deux le niveau 1 " line tables only ", mais c'était plus que cela, avec des informations sur toutes les fonctions, mais pas sur les types et les variables. Ce niveau est maintenant appelé "limited", et le nouveau niveau "line-tables-only" est encore plus réduit au minimum nécessaire pour les backtraces avec les noms de fichiers et les numéros de lignes. Ce niveau pourrait éventuellement devenir le niveau utilisé pour -Cdebuginfo=1. L'autre niveau line-directives-only est destiné au profilage NVPTX, et n'est pas recommandé par ailleurs.

    Notez que ces options nommées ne sont pas encore disponibles pour être utilisées via Cargo.toml. Ce support sera disponible dans la prochaine version 1.71.

    Stabilité forcée dans le CLI de test

    Lorsque les fonctions #[test] sont compilées, l'exécutable reçoit une interface de ligne de commande de la crate test. Cette CLI dispose d'un certain nombre d'options, dont certaines ne sont pas encore stabilisées et nécessitent de spécifier -Zunstable-options, comme beaucoup d'autres commandes dans la chaîne d'outils Rust. Cependant, alors que cela n'est censé être autorisé que dans les nightly builds, cette restriction n'était pas active dans test - jusqu'à présent. À partir de la version 1.70.0, les versions stable et beta de Rust n'autoriseront plus les options de test instables, ce qui les rendra vraiment réservées aux versions nocturnes, comme indiqué dans la documentation.

    Il y a des cas connus où des options instables ont pu être utilisées sans que l'utilisateur le sache, en particulier --format json utilisé dans IntelliJ Rust et d'autres plugins IDE. Ces projets sont déjà en train de s'adapter à ce changement, et le statut de la sortie JSON peut être suivi dans son numéro de suivi.

    Source : Annonce de Rust 1.70.0

    Et vous ?

    Que pensez-vous de cette dernière version du langage Rust ?

    Trouvez-vous que les améliorations apportées au langage sont intéressantes ?

    Voir aussi

    Rust 1.69.0, la dernière version du langage de programmation multi-paradigme, est disponible, et inclut de nombreuses petites améliorations

    Rust 1.68 : le protocole de registre "sparse" de Cargo est désormais disponible en version stable, cette mouture s'accompagne d'une nouvelle macro pin

    Le langage de programmation Rust gagne en popularité parmi les développeurs et fait son entrée dans le top 20, selon Tiobe. Python, Java, C et C++ s'accaparent à eux seuls de 55% de parts de marché
    Contribuez au club : corrections, suggestions, critiques, ... Contactez le service news et Rédigez des actualités

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2003
    Messages
    1 270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2003
    Messages : 1 270
    Points : 4 075
    Points
    4 075
    Par défaut
    je vais pouvoir mettre à jour mes projets en enlevant les lazy_static, ça fera une dépendance en moins

Discussions similaires

  1. Réponses: 0
    Dernier message: 20/09/2017, 12h11
  2. Réponses: 17
    Dernier message: 16/10/2010, 16h05
  3. Réponses: 0
    Dernier message: 18/09/2010, 18h56
  4. Réponses: 0
    Dernier message: 26/09/2009, 12h36
  5. Réponses: 0
    Dernier message: 26/09/2009, 12h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo