Version du langage de programmation Rust 1.52

La version du langage de programmation système Rust 1.52, 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 :

  • Suppression de la liaison à l'ordre d'exécution des commandes « cargo check » et « cargo clippy ». Auparavant, appeler "cargo clippy" après "cargo check" ne lançait pas l'utilitaire clippy (linter) en raison du manque de séparation du cache pour ces modes de vérification. Maintenant, ce problème a été résolu et l'ordre dans lequel « cargo clippy » et « cargo check » sont appelés n'a plus d'importance.
  • Une nouvelle partie de l'API a été transférée dans la catégorie stable, dont les méthodes suivantes ont été stabilisées :
    • Arguments ::as_str
    • char::MAX
    • char::REPLACEMENT_CHARACTER
    • char::UNICODE_VERSION
    • char :: decode_utf16
    • char ::from_digit
    • char ::from_u32_unchecked
    • char::from_u32
    • slice::partition_point
    • str :: rsplit_once
    • str :: split_once
  • L'attribut « const », qui détermine la possibilité de l'utiliser dans n'importe quel contexte à la place de constantes, est utilisé dans les méthodes :
    • char::len_utf8
    • char::len_utf16
    • char :: to_ascii_uppercase
    • char :: to_ascii_lowercase
    • char :: eq_ignore_ascii_case
    • u8 ::to_ascii_uppercase
    • u8 ::to_ascii_lowercase
    • u8 ::eq_ignore_ascii_case
  • Ajout du contrôle lint unsafe_op_in_unsafe_fn pour déterminer si le code non sécurisé utilisé dans les fonctions non sécurisées est encadré par des blocs non sécurisés.
  • Il est permis de convertir des pointeurs mutables vers des tableaux sous la forme de pointeurs vers le type de l'élément du tableau. soit mut x : [usize; 2] = [0]; soit p = &mut x comme *mut usize; soit p = &mut x as *const usize;
  • 9 nouveaux contrôles ont été ajoutés à clippy (linter).
  • Le gestionnaire de colis cargo prend désormais en charge le champ « manifest_path » en JSON pour les colis. Ajout de la prise en charge de la spécification des informations de licence au format SPDX 3.11 dans le référentiel crates.io.
  • Il est permis de spécifier plusieurs filtres lors de l'exécution de tests, par exemple l'exécution de "cargo test - foo bar" exécutera tous les tests correspondant aux masques "foo" et "bar".
  • La boîte à outils LLVM par défaut a été mise à jour vers LLVM 12.
  • Le troisième niveau de support a été implémenté pour les plateformes s390x-unknown-linux-musl, riscv32gc-unknown-linux-musl, riscv64gc-unknown-linux-musl et powerpc-unknown-openbsd. Le troisième niveau implique un support de base, mais sans tests automatisés, sans publication de versions officielles ni vérification si le code peut être construit.

Source: opennet.ru

Ajouter un commentaire