+ Répondre à la discussion Actualité déjà publiée
  1. #1
    Rédacteur/Modérateur

    Avatar de Songbird_
    Homme Profil pro
    Bidouilleur
    Inscrit en
    juin 2015
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : juin 2015
    Messages : 416
    Points : 3 335
    Points
    3 335
    Billets dans le blog
    3

    Par défaut La version stable de Rust 1.26 est maintenant disponible

    La version 1.25 de Rust est désormais disponible,
    et apporte, avec elle, stabilisation et réorganisation dans l'écosystème du langage

    Comme l'équipe Rust a pu le communiquer à travers le post original, cette version n'apporte pas d'ajouts majeurs, mais vient plutôt consolider, et améliorer, ce qui a été précédemment implémenté.

    Mise à niveau de LLVM

    Les outils du compilateur de Rust fonctionnaient, jusqu'ici, avec LLVM 4. Cette version supportait déjà les microcontrôleurs AVR, mais disposait de nombreux bogues, un passage à LLVM 6 rectifie donc le tir pour Rust.

    Ajout: imports imbriqués

    Jusqu'à présent, lorsque nous souhaitons importer plusieurs composants provenant d'un même module, il est courant d'écrire ceci:

    Code Rust : Sélectionner tout - Visualiser dans une fenêtre à part
    use std::path::{Path, PathBuf};

    Ou encore, lorsque nous souhaitons importer plusieurs composants provenant de modules différents:
    Code Rust : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    use std::fs::File;
    use std::io::Read;
    use std::path::{Path, PathBuf};

    Désormais, ça ne sera plus nécessaire. La 1.25 permet l'importation imbriquée lorsque plusieurs sous-modules partagent un même module parent/racine.


    (Exemple provenant du post original)
    Code Rust : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // Exemple "inline"
    use std::{fs::File, io::Read, path::{Path, PathBuf}};
     
    // Équivalent à la ligne du dessus.
    use std::{
        fs::File,
        io::Read,
        path::{
            Path,
            PathBuf
        }
    };

    Documentation et Markdown

    Du côté de la documentation, le livre Rust by Example est officiellement publié sur doc.rust-lang.org. En conséquence, vous pourrez obtenir une version offline du livre, comme toutes les autres ressources officielles.

    Pour ce qui est de rustdoc, l'équipe Rust annonce que les dernières lignes de code écrites en C se trouvant encore dans l'outil ne sont plus, tandis qu'en parallèle ce dernier s'accorde également avec les spécifications CommonMark pour le parsing du markdown.

    Ajout: gestion de l'alignement mémoire

    La 1.18 apportait une solution automatique pour optimiser les accès en mémoire mais qui, toutefois, pouvait avoir un coût en ressources plus ou moins important en fonction des besoins. La 1.25 permet de configurer le coût de la compensation en utilisant l'attribut #[repr(align(x))].

    (Exemple provenant du post original)
    Code Rust : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    struct Number(i32);
     
    assert_eq!(std::mem::align_of::<Number>(), 4);
    assert_eq!(std::mem::size_of::<Number>(), 4);
     
    #[repr(align(16))]
    struct Align16(i32);
     
    assert_eq!(std::mem::align_of::<Align16>(), 16);
    assert_eq!(std::mem::size_of::<Align16>(), 16);

    Stabilisation de la std

    Concernant la bibliothèque standard, une nouvelle structure, dédiée à la gestion des pointeurs, a été ajoutée : std::ptr::NonNull<T>. Elle permet la gestion de pointeurs mutables tout en offrant la garantie que le pointeur soumis n'est jamais nul.
    Par ailleurs, son utilisation est vivement recommandée lorsque du code source Rust communique avec du code étranger (ou "unsafe").

    Ajoutons à cela que les méthodes from_secs et from_millis ont vu leur signature changer pour pouvoir être utilisée lors de la définition de constantes.

    Code Rust : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // Exemple d'utilisation pour les deux fonctionnalités présentées.
     
    use std::{
        time::Duration,
        ptr::NonNull
    };
     
    const A_DURATION: Duration = Duration::from_secs(20);
     
    fn main() {
        let mutable_integer: NonNull<u8> = NonNull::new(0 as *mut u8).expect("The pointer is null.");
    }

    Du nouveau pour Cargo

    Nous terminerons sur les petites modifications de comportement apportées aux commandes cargo new et cargo doc.

    Pour la première, cargo new générera, désormais, un projet exécutable par défaut. Ajoutons à cela que la commande ne renommera plus les projets préfixés par rust- et/ou suffixés par rs-, après un retour de la communauté sur le sujet.

    Pour la seconde, cargo doc bénéficie d'un gain de performance non négligeable. Au lieu de recompiler systématiquement les sources, la commande ne collectera, désormais, plus que les métadonnées nécessaires à la génération de la documentation, réduisant ainsi le temps de traitement.

    Source : Annonce officielle

    Et vous ?

    Que pensez-vous de cette nouvelle version ?

    Quelles sont les améliorations auxquelles vous vous attendiez ?

    Voir aussi

    La version stable de Rust 1.24 est disponible

    Rust 1.18 est disponible en version stable
    Avant de poster: FAQ Rust; FAQ Dart; FAQ Java; FAQ JavaFX.
    Vous souhaiteriez vous introduire au langage Rust ? C'est par ici ou ici !
    Une question à propos du langage ? N'hésitez pas à vous rendre sur le forum !


    Pour contribuer à la rubrique, vous pouvez me contacter par MP ou contacter directement la rédaction.

  2. #2
    Chroniqueuse Actualités
    Avatar de Blondelle Mélina
    Femme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    mars 2018
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : mars 2018
    Messages : 58
    Points : 1 542
    Points
    1 542

    Par défaut L'équipe du langage de programmation Rust annonce la sortie de la version 1.26.0

    La version stable de Rust 1.26 est maintenant disponible,
    et est probablement la version la plus riche en termes de fonctionnalités depuis Rust 1.0

    L'équipe de Rust a annoncé la sortie de la version 1.26.0 du langage de programmation Rust. Pour rappel, ce dernier est un langage de programmation système ultra-rapide, qui prévient les erreurs de segmentation et garantit la sûreté entre threads. Pendant près de 18 mois, Carol, Steve et d'autres ont travaillé sur la réécriture complète de « The Rust Programming Language ». Depuis la version 1.0 du langage de programmation, la version 1.26 est la version stable la plus riche en fonctionnalités d'après les développeurs de Rust. Les autres ayant reçu que quelques changements mineurs.

    Nom : rust-language.png
Affichages : 1965
Taille : 4,2 Ko

    Si vous avez une version antérieure de Rust installée via rustup, pour obtenir Rust 1.26.0, vous pouvez exécuter cette commande : $ rustup update stable. Mais, si vous ne l'avez pas encore installé, vous pouvez l'obtenir ici.

    Qu'est-ce qu'il y a de nouveau avec la version 1.26.0 du langage Rust ?

    L'ajout de la fonctionnalité impl Trait qui a longtemps été réclamée par la communauté des développeurs Rust, car elle fournit une fonctionnalité connue sous le nom de « types existentiels ».
    Code rust : Sélectionner tout - Visualiser dans une fenêtre à part
    fn foo () -> impl Trait { // ... }
    Pour rendre la syntaxe un peu plus symétrique, vous pouvez utiliser impl Trait en position d'argument.
    Code rust : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // before 
    fn foo < T : Trait > ( x : T ) { 
    // after 
    fn foo ( x : impl Trait ) {

    L'équipe Rust a aussi apporté des améliorations à la fonctionnalité match. Elle était au préalable utilisée comme ci-dessous :
    Code rust : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    fn hello(arg: &Option<String>) {
        match arg {
            &Some(name) => println!("Hello {}!", name),
            &None => println!("I don't know who you are."),
        }
    }
    mais ne marchait pas sur Rust 1.25.0. Le message d'erreur ci-après apparaissait :
    Code rust : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    error[E0507]: cannot move out of borrowed content
     --> src/main.rs:6:9
      |
    6 |         &Some(name) => println!("Hello {}!", name),
      |         ^^^^^^----^
      |         |     |
      |         |     hint: to prevent move, use `ref name` or `ref mut name`
      |         cannot move out of borrowed content
    Ils ont apporté des améliorations en ajoutant ref devant name pour obtenir une référence à l'intérieur de l'option.
    Code rust : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    fn hello(arg: &Option<String>) {
        match arg {
            &Some(ref name) => println!("Hello {}!", name),
            &None => println!("I don't know who you are."),
        }
    }
    Néanmoins, pour la version 1.26 de Rust, la fonctionnalité match sera maintenant utilisée comme l'indique le code suivant :
    Code rust : Sélectionner tout - Visualiser dans une fenêtre à part
    match arg { Some ( name ) => println! ( "Hello {}!" , name ),
    Le code sera sans & et ref, mais compilera et fera exactement ce que nous attendons. Le compilateur référencera ou dé-référencera automatiquement dans les instructions de match.

    Dans Rust 1.26, il sera maintenant possible de déclarer la fonction main qui renvoie Result :
    Code rust : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    use std::fs::File;
    fn main() -> Result<(), std::io::Error> {
        let f = File::open("bar.txt")?;
        Ok(())
    }
    Si la fonction main renvoie une erreur, elle se termine avec un code d'erreur et imprime une représentation de débogage de l'erreur.

    Dans Rust 1.26, vous pouvez maintenant créer une plage inclusive, comme ceci :
    Code rust : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for i in 1. .= 3 { 
        println! ( "i: {}" , i ); 
    }
    Cela va imprimer i: 1 et ensuite i: 2 comme avant, mais aussi i: 3 ; les trois sont inclus dans la gamme. Les plages inclusives sont particulièrement utiles si nous souhaitons parcourir toutes les valeurs possibles dans une plage.
    Dans Rust 1.0, nous avions été en mesure de créer des gammes exclusives avec . . comme ceci :
    Code rust : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for i in 1. .= 3 { 
        println! ( "i: {}" , i ); 
    }
    Qui imprimait i: 1 puis i: 2.

    L'équipe du langage de programmation Rust dit avoir également stabilisé la bibliothèque fs::read_to_string, une commodité sur File::open et io::Read::read_to_string pour lire facilement un fichier entier en mémoire à la fois :
    Code rust : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    use std :: fs; 
    use std :: net :: SocketAddr; 
    let foo : SocketAddr = fs :: read_to_string ( "address.txt" )?.parse ()?;
    Vous pouvez maintenant mettre en forme des nombres au format hexadécimal avec le formatage Debug :
    Code rust : Sélectionner tout - Visualiser dans une fenêtre à part
    assert! ( format! ( "{:02x?}" , b "Foo\0" ) == "[46, 6f, 6f, 00]" )
    Les virgules de fin sont maintenant supportées par toutes les macros de la bibliothèque standard.



    Source : Rust

    Et vous ?

    Qu'en pensez-vous ?
    Quelle nouveauté appréciez-vous le plus ?

    Voir aussi :

    La version 1.25 de Rust est désormais disponible, et apporte avec elle stabilisation et réorganisation dans l'écosystème du langage
    Rust : apprendre à encoder et décoder du TOML avec la bibliothèque toml-rs, un tutoriel d'Anthony Defranceschi
    La version stable de Rust 1.24 est disponible, avec la compilation incrémentielle par défaut pour améliorer le temps de compilation des projets
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    juillet 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : juillet 2013
    Messages : 46
    Points : 95
    Points
    95

    Par défaut match avec des retours à la ligne

    Est-ce possible de mettre des retours à la ligne sur les exemples de match ?
    à la lecture c'est bof (et non conventionnel) et en plus ça nécessite de scroller horizontalement.

  4. #4
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Auditeur
    Inscrit en
    juillet 2012
    Messages
    6 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Auditeur
    Secteur : Conseil

    Informations forums :
    Inscription : juillet 2012
    Messages : 6 133
    Points : 66 787
    Points
    66 787
    Billets dans le blog
    15

    Par défaut

    Salut,

    Citation Envoyé par mothsART Voir le message
    Est-ce possible de mettre des retours à la ligne sur les exemples de match ?
    C'est fait.
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  5. #5
    Rédacteur/Modérateur

    Avatar de Songbird_
    Homme Profil pro
    Bidouilleur
    Inscrit en
    juin 2015
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : juin 2015
    Messages : 416
    Points : 3 335
    Points
    3 335
    Billets dans le blog
    3

    Par défaut

    Bonjour,

    Est-ce possible de mettre des retours à la ligne sur les exemples de match ?
    à la lecture c'est bof (et non conventionnel) et en plus ça nécessite de scroller horizontalement.
    J'ai formaté tous les exemples qui en avait besoin. Merci à toi.
    Avant de poster: FAQ Rust; FAQ Dart; FAQ Java; FAQ JavaFX.
    Vous souhaiteriez vous introduire au langage Rust ? C'est par ici ou ici !
    Une question à propos du langage ? N'hésitez pas à vous rendre sur le forum !


    Pour contribuer à la rubrique, vous pouvez me contacter par MP ou contacter directement la rédaction.

Discussions similaires

  1. Skype est désormais disponible en version finale sur Mac et Windows
    Par Stéphane le calme dans le forum Actualités
    Réponses: 3
    Dernier message: 08/11/2014, 11h57
  2. Réponses: 0
    Dernier message: 26/09/2009, 12h36
  3. Réponses: 0
    Dernier message: 26/09/2009, 12h36
  4. ProTools 8 est désormais disponible
    Par aodix dans le forum Audio
    Réponses: 0
    Dernier message: 19/12/2008, 09h33

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