Version du langage de programmation Rust 1.46

Publié version 1.46 du langage de programmation système Calme, 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 é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. 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 capacités des fonctions définies à l'aide de l'expression « const fn » ont été étendues, qui peuvent être appelées non seulement comme fonctions régulières, mais également utilisées dans n'importe quel contexte au lieu de constantes. Ces fonctions sont calculées au moment de la compilation et non au moment de l'exécution. Elles sont donc soumises à certaines restrictions, telles que la possibilité de lire uniquement à partir de constantes.

    La nouvelle version supprime l'interdiction d'utiliser les opérateurs booléens (« && » et « || ») dans de telles fonctions et autorise l'utilisation des constructions « if », « if let », « match »,
    "while", "while let" et "loop", et offre également la possibilité de convertir en tranches (slice, tableaux dynamiques) en utilisant l'expression "&[T]". L'utilisation de ces fonctionnalités dans les fonctions « const fn » permet de déplacer certaines opérations gourmandes en ressources vers l'étape de compilation. Par exemple, l'implémentation de « const-sha1 » permet de calculer les hachages SHA-1 au moment de la compilation, ce qui accélère de près de 40 fois les liaisons WinRT pour Rust.

  • Pour rendre les messages d'erreur plus informatifs, la prise en charge de l'attribut « #[track_caller] » a été stabilisée, ce qui est utile pour des fonctions telles que unwrap, qui peuvent provoquer une panique si les types sont utilisés de manière incorrecte. L'attribut spécifié sera utilisé par le gestionnaire de panique pour imprimer l'emplacement de l'appelant dans un message d'erreur.
  • L'attribut « const », qui détermine la possibilité de l'utiliser dans n'importe quel contexte au lieu de constantes, est utilisé dans la méthode std::mem::forget.
  • Une nouvelle partie de l'API a été déplacée vers la catégorie stable, y compris les options stabilisées Option::zip et vec::Drain::as_slice.
  • Dans le gestionnaire de paquets Cargo ajoutée prise en charge de nouvelles variables d'environnement définies lors de la compilation d'un package : CARGO_BIN_NAME (nom du fichier exécutable résultant), CARGO_CRATE_NAME (nom du package), CARGO_PKG_LICENSE (licence spécifiée dans le manifeste), CARGO_PKG_LICENSE_FILE (chemin d'accès au fichier de licence).

Source: opennet.ru

Ajouter un commentaire