Version du langage de programmation Rust 1.55

La version du langage de programmation système Rust 1.55, fondé par le projet Mozilla, mais désormais développé sous les auspices de l'organisation indépendante à but non lucratif Rust Foundation, a été publiée. Le langage se concentre sur la sécurité de la mémoire, assure une gestion automatique de la mémoire et fournit les moyens d'atteindre un parallélisme élevé des tâches sans utiliser de garbage collector ou d'exécution (le temps d'exécution est réduit à l'initialisation et à la maintenance de base de la bibliothèque standard).

La gestion automatique de la mémoire de Rust élimine les erreurs lors de la manipulation des pointeurs et protège contre les problèmes résultant de la manipulation de la mémoire de bas niveau, tels que l'accès à une région mémoire après sa libération, les déréférences de pointeurs nuls, les dépassements de tampon, etc. Pour distribuer les bibliothèques, assurer l'assemblage et gérer les dépendances, le projet développe le gestionnaire de packages Cargo. Le référentiel crates.io est pris en charge pour l'hébergement de bibliothèques.

Principales nouveautés :

  • Le gestionnaire de packages Cargo a la capacité de fusionner les erreurs et les avertissements en double qui se produisent lors d'une construction. Lors de l'exécution de commandes telles que "cargo test" et "cargo check --all-targets" qui entraînent plusieurs builds d'un package avec des paramètres différents, l'utilisateur voit désormais un résumé de l'occurrence d'un problème répétitif, au lieu d'être affiché. plusieurs avertissements identiques lors de la construction répétée du même fichier. $ cargo +1.55.0 check —all-targets Vérification de foo v0.1.0 avertissement : la fonction n'est jamais utilisée : 'foo' —> src/lib.rs:9:4 | 9 | fn foo() {} | ^^^ | = note : '#[warn(dead_code)]' activé par défaut avertissement : 'foo' (lib) a généré 1 avertissement avertissement : 'foo' (lib test) a généré 1 avertissement (1 doublon) Dév terminé [non optimisé + debuginfo] cible (s)en 0.84 s
  • Le code d'analyse à virgule flottante de la bibliothèque standard a été déplacé pour utiliser l'algorithme Eisel-Lemire, plus rapide et plus précis, qui a résolu certains problèmes observés précédemment lors de l'arrondi et de l'analyse de nombres comportant un très grand nombre de chiffres.
  • La possibilité de spécifier des plages non fermées dans les modèles a été stabilisée (« X.. » est interprété comme une plage qui commence par la valeur X et se termine par la valeur maximale du type entier) : faites correspondre x comme u32 { 0 => println ! ("zéro!"), 1.. => println!("nombre positif!"), }
  • Variantes d'erreur étendues couvertes par std::io::ErrorKind (classe les erreurs en catégories telles que NotFound et ShouldBlock). Auparavant, les erreurs qui ne rentraient pas dans les catégories existantes tombaient dans la catégorie ErrorKind::Other, qui était également utilisée pour les erreurs dans le code tiers. Il existe désormais une catégorie interne distincte ErrorKind::Uncategorized pour les erreurs qui ne rentrent pas dans les catégories existantes, et la catégorie ErrorKind::Other est limitée aux erreurs qui ne se produisent pas dans la bibliothèque standard (fonctions de bibliothèque standard qui renvoient io::Error n'utilisez plus la catégorie ErrorKind:: Autre).
  • Une nouvelle partie de l'API a été déplacée vers la catégorie stable, dont les méthodes et les implémentations des traits ont été stabilisées :
    • Lié : cloné
    • Drain::as_str
    • IntoInnerError ::into_error
    • IntoInnerError ::into_parts
    • Peut-êtreUninit :: assume_init_mut
    • Peut-êtreUninit :: assume_init_ref
    • Peut-êtreUninit :: écrire
    • tableau :: carte
    • ops :: ControlFlow
    • x86::_bittest
    • x86::_bittestandcomplement
    • x86::_bittestandreset
    • x86::_bittestandset
    • x86_64::_bittest64
    • x86_64::_bittestandcomplement64
    • x86_64::_bittestandreset64
    • x86_64::_bittestandset64
  • L'attribut « const », qui détermine la possibilité de l'utiliser dans n'importe quel contexte à la place de constantes, est utilisé dans la méthode str::from_utf8_unchecked.
  • Le troisième niveau de support a été implémenté pour la plateforme powerpc64le-unknown-freebsd. Le troisième niveau implique un support de base, mais sans tests automatisés, publication des versions officielles et vérification de la constructibilité du code.

Source: opennet.ru

Ajouter un commentaire