Version du langage de programmation Rust 1.43

Publié version du langage de programmation système Rouille 1.43, fondé par le projet Mozilla. Le langage se concentre sur la sécurité de la mémoire, assure une gestion automatique de la mémoire et fournit des outils permettant d'atteindre un parallélisme élevé des tâches sans utiliser de garbage collector et d'exécution.

La gestion automatique de la mémoire de Rust libère le développeur de la manipulation du pointeur et le protège contre les problèmes résultant de la manipulation de la mémoire de bas niveau, tels que les accès mémoire après libération, les déréférences de pointeur nul, les dépassements de tampon, etc. Un gestionnaire de packages est en cours de développement pour distribuer les bibliothèques, assurer l'assemblage et gérer les dépendances par le projet. Cargaison, vous permettant d'obtenir les bibliothèques nécessaires au programme en un clic. Un référentiel est pris en charge pour héberger des bibliothèques caisses.io.

principal les innovations:

  • Les macros offrent la possibilité d'utiliser des fragments d'éléments pour les transformer en code pour des traits (trait), des implémentations (impl) ou des blocs externes. Par exemple:

    macro_rules ! mac_trait {
    ($i:article) => {
    trait T {$i}
    }
    }
    mac_trait! {
    fn foo() {}
    }

    Conduira à la génération :

    trait T {
    fn foo() {}
    }

  • Détection de type améliorée des primitives, des références et des opérations binaires.
    Par exemple, le code suivant, qui provoquait auparavant une erreur, pourra désormais être compilé (Rust détermine désormais correctement que 0.0 et &0.0 doivent être de type f32) :

    soit n : f32 = 0.0 + &0.0 ;

  • Une nouvelle variable d'environnement CARGO_BIN_EXE_{name} a été ajoutée à Cargo, qui est définie lors de la construction des tests d'intégration et vous permet de déterminer le chemin complet vers le fichier exécutable défini dans la section « [[bin]] » du package.
  • Si les instructions sont autorisées à utiliser des attributs tels que "#[cfg()]".
  • La bibliothèque offre la possibilité d'utiliser les constantes associées directement pour les types entiers et fractionnaires, sans importer de module. Par exemple, vous pouvez immédiatement écrire u32::MAX ou f32::NAN sans spécifier au préalable « use std :: u32 » et « use std :: f32 ».
  • Nouveau module ajouté primitif, qui réexporte les types primitifs Rust, par exemple lorsque vous devez écrire une macro et vous assurer que les types ne sont pas masqués.
  • Une nouvelle partie des API a été transférée dans la catégorie stable, notamment les API stabilisées

    Une fois : is_completed,
    f32::LOG10_2,
    f32::LOG2_10,
    f64::LOG10_2,
    f64::LOG2_10 et
    iter::once_with.

Source: opennet.ru

Ajouter un commentaire