Version du langage de programmation Rust 1.76

La sortie du langage de programmation polyvalent Rust 1.76, fondé par le projet Mozilla, mais maintenant 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 et fournit les moyens d'atteindre un parallélisme élevé des tâches tout en évitant l'utilisation d'un ramasse-miettes et d'un temps d'exécution (le temps d'exécution est réduit à l'initialisation et à la maintenance de base de la bibliothèque standard).

Les méthodes de gestion de la mémoire de Rust évitent au développeur les erreurs lors de la manipulation des pointeurs et protègent contre les problèmes qui surviennent en raison de la gestion de la mémoire de bas niveau, comme l'accès à une zone mémoire après qu'elle a été libérée, le déréférencement des pointeurs nuls, les dépassements de mémoire tampon, etc. Pour distribuer les bibliothèques, fournir des builds 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.

La sécurité de la mémoire est fournie dans Rust au moment de la compilation grâce à la vérification des références, au suivi de la propriété des objets, au suivi des durées de vie des objets (portées) et à l'évaluation de l'exactitude de l'accès à la mémoire pendant l'exécution du code. Rust fournit également une protection contre les débordements d'entiers, nécessite une initialisation obligatoire des valeurs de variables avant utilisation, gère mieux les erreurs dans la bibliothèque standard, applique le concept de références et de variables immuables par défaut, propose un typage statique fort pour minimiser les erreurs logiques.

Principales nouveautés :

  • Une section distincte décrivant la compatibilité des différents types d'arguments et types de retour des fonctions au niveau ABI a été ajoutée à la documentation. Par rapport aux versions précédentes, la compatibilité au niveau ABI est garantie pour les types « char » et « u32 », dont la taille et l'alignement sont identiques.
  • En plus de l'appel « any::type_name:: » précédemment disponible ()", qui renvoie une description de chaîne pour le type spécifié dans le paramètre "T", a été ajoutée la fonction "type_name_of_val(&T)" vous permettant d'obtenir des informations sur le type en fonction de toute référence sans nom. fn get_iter() -> impl Iterator { [32, 1, 2].into_iter() } fn main() { let iter = get_iter(); let iter_name = std::any::type_name_of_val(&iter); let sum: i3 = iter.sum(); println!("La somme de `{iter_name}` est {sum}."); } La sortie est : La somme de `core::array::iter::IntoIter ` est 32.
  • 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 :
    • Arc::unwrap_or_clone
    • Rc::unwrap_or_clone
    • Résultat::inspecter
    • Résultat ::inspect_err
    • Option::inspect
    • type_nom_de_val
    • std::hash::{DefaultHasher, RandomState}
    • ptr::{de_ref, de_mut}
    • ptr::addr_eq
  • Le troisième niveau de support a été implémenté pour les plateformes {x86_64,i686}-win7-windows-msvc, aarch64-apple-watchos, arm64e-apple-ios et arm64e-apple-darwin. Ce troisième niveau implique un support de base, mais sans tests automatisés, publication de versions officielles ni vérification de la capacité à compiler du code.

De plus, nous pouvons noter la démonstration du planificateur de tâches expérimental scx_rustland, écrit en langage Rust et exécuté en espace utilisateur (la suppression de la logique de planification des tâches du noyau vers l'espace utilisateur est implémentée à l'aide de la boîte à outils sched-ext, qui utilise BPF). Le planificateur est optimisé pour augmenter la priorité des tâches interactives par rapport aux tâches gourmandes en ressources CPU. Par exemple, lors d'un test de lancement d'une application de jeu simultanément à la construction du noyau, le planificateur scx_rustland nous a permis d'obtenir une fréquence d'images plus élevée dans le jeu qu'avec le planificateur EEVDF standard.

Source: opennet.ru

Achetez un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Achetez un hébergement web fiable avec protection DDoS, serveurs VPS et VDS | ProHoster