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.61.0 est disponible, elle apporte de nouvelles fonctionnalités et améliorations


Sujet :

Rust

  1. #1
    Chroniqueur Actualités
    Avatar de Bruno
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    mai 2019
    Messages
    834
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : mai 2019
    Messages : 834
    Points : 10 441
    Points
    10 441
    Par défaut Rust 1.61.0 est disponible, elle apporte de nouvelles fonctionnalités et améliorations
    Rust 1.61.0 est disponible, elle apporte de nouvelles fonctionnalités et améliorations
    plus de possibilités pour les const fn et les manipulations statiques pour stdio verrouillé

    L'équipe Rust a annoncé la disponibilité de Rust 1.61.0, elle apporte un code Codes exit personnalisés de main, plus de possibilités pour les const fn et Manipulations statiques pour stdio verrouillé, « L'équipe Rust est heureuse d'annoncer une nouvelle version de Rust, 1.61.0. Rust est un langage de programmation qui permet à chacun de construire des logiciels fiables et efficaces », a déclaré l’équipe Rust.

    Nom : Rust2B.png
Affichages : 4074
Taille : 20,2 Ko

    Rappelons que Rust est un langage de programmation compilé multiparadigme, conçu par Graydon Hore alors employé chez Mozilla Research, avec la contribution du créateur de JavaScript Brendan Eich. Utilisé par plusieurs grandes entreprises et par de nombreux développeurs dans le monde, Rust est devenu le langage de base pour certaines des fonctionnalités fondamentales du navigateur Firefox et de son moteur Gecko, ainsi que pour le moteur Servo de Mozilla.

    Codes exit personnalisés de main

    Au début, les fonctions main de Rust ne pouvaient retourner que le type d'unité () (implicitement ou explicitement), indiquant toujours le succès dans le statut de sortie, et si l’utilisateur voulait autre chose, il devait appeler process::exit(code). Depuis Rust 1.26, la fonction main() est autorisée à retourner un Result, où Ok se traduit par un EXIT_SUCCESS en C et Err par un EXIT_FAILURE (avec également une impression de débogage de l'erreur). En dessous, ces types de retour alternatifs étaient unifiés par un trait de terminaison instable.

    Dans cette version, ce trait Termination est enfin stable, ainsi qu'un type ExitCode plus général qui englobe les types de retour spécifiques à la plateforme. Il possède les constantes SUCCESS et FAILURE, et implémente également From<u8> pour des valeurs plus arbitraires. Le trait Termination peut également être implémenté pour les types propres à l’utilisateur, permettant de personnaliser n'importe quel type de rapport avant de le convertir en ExitCode.

    Par exemple, voici une façon sûre du point de vue du type d'écrire des codes de sortie pour un script d'exécution de git bisect :

    Code Rust : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    use std::process::{ExitCode, Termination};
     
    #[repr(u8)]
    pub enum GitBisectResult {
        Good = 0,
        Bad = 1,
        Skip = 125,
        Abort = 255,
    }
     
    impl Termination for GitBisectResult {
        fn report(self) -> ExitCode {
            // Maybe print a message here
            ExitCode::from(self as u8)
        }
    }
     
    fn main() -> GitBisectResult {
        std::panic::catch_unwind(|| {
            todo!("test the commit")
        }).unwrap_or(GitBisectResult::Abort)
    }


    Plus de possibilités pour les const fn

    Plusieurs fonctionnalités incrémentales ont été stabilisées dans cette version pour permettre plus de fonctionnalités dans les fonctions const. Gestion de base des pointeurs fn : il est maintenant possible de créer, passer et caster des pointeurs de fonction dans un const fn. Par exemple, cela pourrait être utile pour construire des tables de fonctions à la compilation pour un interpréteur. Cependant, il n'est toujours pas permis d'appeler les pointeurs fn. Il est également possible d’écrire des limites de traits sur les paramètres génériques des const fn, comme T : Copy, alors qu'auparavant seul Sized était autorisé.

    De la même manière, const fn peut maintenant traiter des objets Trait, dyn Trait. Les arguments et les valeurs de retour de const fn peuvent désormais être des types impl Trait opaques. Notons que les caractéristiques des traits ne supportent pas encore l'appel de méthodes de ces traits dans un const fn.

    Manipulations statiques pour stdio verrouillé

    Les trois flux d'E/S standard -- Stdin, Stdout, et Stderr -- ont chacun un lock(&self) pour permettre plus de contrôle sur la synchronisation des lectures et des écritures. Cependant, ils retournaient des gardes de verrou avec une durée de vie empruntée à &self, de sorte qu'ils étaient limités à la portée du handle original. Il a été déterminé qu'il s'agissait d'une limitation inutile, puisque les verrous sous-jacents étaient en fait stockés de manière statique.

    Par exemple, une erreur fréquente consistait à essayer d'obtenir un handle et de le verrouiller en une seule instruction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    error[E0716]: temporary value dropped while borrowed
    let out = std::io::stdout().lock();
    //        ^^^^^^^^^^^^^^^^^       - temporary value is freed at the end of this statement
    //        |
    //        creates a temporary which is freed while still in use

    Microsoft a annoncé Rust preview pour Windows en avril de l’année dernière, elle permettra la création d'applications Rust pour le célèbre système d’exploitation de Microsoft en utilisant n'importe quelle API Windows. Avec Rust pour Windows, les développeurs peuvent désormais non seulement utiliser Rust sur Windows, mais aussi développer des applications pour Windows en utilisant Rust. Cependant, s’il y a une question qui revient dans la communauté des développeurs, c’est celle de savoir pourquoi les entreprises et les scientifiques se tournent vers le langage Rust.

    La comparaison entre Rust et C++ reste un sujet d'actualité, car ces langages de programmation sont en concurrence dans des domaines comme le développement système et l'embarqué. Du point de vue technique, les deux langages partagent de nombreuses similitudes dans leur syntaxe. Cependant, Rust et C++ présentent des différences significatives. Pour certains analystes, le C++ possède des bases plus solides en ce qui concerne la communauté et les informations générales sur ses principes. En outre, par rapport au C++, Rust est un nouveau venu dans le monde de la programmation, et de nombreux développeurs hésitent à s'y intéresser.

    L'année dernière, AWS, Huawei, Google, Microsoft et Mozilla se sont associées pour lancer la fondation Rust et se sont engagées à lui consacrer un budget d'un million de dollars pour deux ans. Ce budget permettra au projet de développer des services, des programmes et des événements qui aideront les responsables du projet Rust à développer le meilleur Rust possible. Google a également annoncé que l'Android Open Source Project (AOSP) prendra désormais en charge le langage Rust pour le développement de son système d’exploitation mobile. « Outre les langages à mémoire sécurisée comme Kotlin et Java, nous sommes heureux d'annoncer que le projet Android Open Source prend désormais en charge le langage de programmation Rust pour le développement du système d'exploitation Android », a déclaré Google sur son blog.

    Google a récemment déclaré que : « les défauts de sécurité de la mémoire menacent fréquemment la sécurité des appareils, en particulier pour les applications et les systèmes d'exploitation. Par exemple, sur le système d'exploitation mobile Android, Google dit avoir constaté que plus de la moitié des vulnérabilités de sécurité traitées en 2019 résultaient de bogues de sécurité de la mémoire. Et ce, malgré les efforts considérables déployés par l'entreprise et d'autres contributeurs au projet Open Source Android, pour investir ou inventer diverses technologies, notamment l'AddressSanitizer, des allocateurs de mémoire améliorés et de nombreux fuzzers et autres outils de vérification du code ».

    Pour Ashley Williams, Directeur exécutif par intérim de la fondation Rust, le langage « donne du pouvoir » à tout le monde, mais surtout aux gens qui pensent que la programmation système n'est pas pour eux. « L'une des forces motrices les plus puissantes du projet Rust est la croyance simultanée dans le pouvoir de la programmation système et l'engagement à faire en sorte que ce pouvoir soit utilisable par tous », a-t-il déclaré lors de son discours d’ouverture de la RustConf 2020.

    Dans une prochaine version, l’équipe Rust prévoit d'augmenter les exigences de base pour le noyau Linux à la version 3.2, et pour la glibc à la version 2.17.

    Source : Rust

    Et vous ?

    Quel est votre avis sur le sujet ?

    Voir aussi :

    Facebook rejoint AWS, Huawei, Google, Microsoft et Mozilla dans la Fondation Rust et renforce son équipe Rust par des nouveaux talents

    Microsoft annonce Rust preview pour Windows, alors que la comparaison entre Rust et C++ reste un sujet d'actualité

    Microsoft, Google, AWS, Huawei et Mozilla s'associent pour créer la Fondation Rust, une organisation à but non lucratif chargée de gérer le langage de programmation

    Rust 1.53.0 est disponible et s'accompagne de IntoIterator pour les tableaux, Cargo prend désormais en charge les référentiels git où la branche HEAD par défaut n'est pas "master"
    Contribuez au club : corrections, suggestions, critiques, ... Contactez le service news et Rédigez des actualités

  2. #2
    Membre chevronné Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    mai 2007
    Messages
    1 025
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : mai 2007
    Messages : 1 025
    Points : 2 130
    Points
    2 130
    Par défaut
    Personnellement, je jongle en C++ et Rust.

    J'avoue que Rust est super, mais actuellement, il y a des retards par rapport a C++.
    Typiquement, en C++ on peut actuellement faire beaucoup à la compilation avec les constexpr, en Rust ce n'est autant développé avec ses const.
    A l'inverse, les modules de Rust sont top alors que C++ est en retard la dessus. Mais sur le long terme, ce retard sera rattrapé et ce ne sera plus un argument.

    Une autre chose que je n'aime pas dans Rust c'est que les static n'ont pas de Drop ( a.k.a destructor appelé ) car il considère les fuites mémoires comme safe... Ok c'est safe car appelé les destructeurs sur des variables globales pose d'autres problème, mais ça reste une fuite mémoire, je trouve que c'est un problème personnellement, car j'apprécie ne pas dépendre de l'OS pour le comportement de mon programme.

    Rust est bien, il muri, mais n'est pas encore assez mature pour être utilisé sur des grands projets professionnel. Et j'attends que ça mais C++ restera une valeur sure.
    Homer J. Simpson


  3. #3
    Expert confirmé
    Avatar de Pyramidev
    Homme Profil pro
    Développeur
    Inscrit en
    avril 2016
    Messages
    1 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : avril 2016
    Messages : 1 302
    Points : 5 413
    Points
    5 413
    Par défaut
    Citation Envoyé par Astraya Voir le message
    Une autre chose que je n'aime pas dans Rust c'est que les static n'ont pas de Drop ( a.k.a destructor appelé ) [...] je trouve que c'est un problème personnellement, car j'apprécie ne pas dépendre de l'OS pour le comportement de mon programme.
    Par curiosité, quelles variables statiques aurais-tu souhaité créer en Rust, si drop était appelé à la fin du programme ?

  4. #4
    Membre chevronné Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    mai 2007
    Messages
    1 025
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : mai 2007
    Messages : 1 025
    Points : 2 130
    Points
    2 130
    Par défaut
    Citation Envoyé par Pyramidev Voir le message
    Par curiosité, quelles variables statiques aurais-tu souhaité créer en Rust, si drop était appelé à la fin du programme ?
    Une hash table custom thread safe servant a l'implémentation de string id ( FName sur Unreal Engine).
    Je sais que l'OS le récupère sans problème, et que ca peut être dangereux car n'importe quoi peut accédé car l'ordre de destruction des statiques n'est pas garanti, mais dans ca cas rust l'interdit complément car rien n'est exécuté avant ou après le main.
    Hors dans mon cas, je sais que l'acces est safe même si la memoire est free. Il faudrait un drop unsafe.
    Par principe, et dans certains cas ou demande spécifique de client, la non libération n'est pas acceptable
    Homer J. Simpson


Discussions similaires

  1. Réponses: 0
    Dernier message: 28/03/2021, 10h19
  2. Réponses: 0
    Dernier message: 05/06/2020, 17h50
  3. Réponses: 40
    Dernier message: 19/01/2011, 07h14
  4. Réponses: 21
    Dernier message: 24/12/2010, 03h02

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