Récemment la sortie de la nouvelle version du langage de programmation “Rust 1.68” a été annoncée. Pour ceux qui ne connaissent pas Rust, sachez que ce langage de programmation a été fondé par le projet Mozilla, mais maintenant développé sous les auspices de la Rust Foundation indépendante à but non lucratif.
La languee 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 dus à la manipulation de la mémoire de bas niveau, comme l’accès à une zone de mémoire après sa libération, le déréférencement des pointeurs nuls, les débordements de mémoire, etc. 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.
Rouiller offre é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, offre un typage statique fort pour minimiser les erreurs logiques.
Principales nouveautés de Rust 1.68
Dans cette nouvelle version qui vient de Rust 1.68, on peut constater que le la prise en charge du protocole Sparse a été stabilisée dans le gestionnaire de paquets Cargo et le référentiel crates.io, qui définit une nouvelle façon de travailler avec un index qui reflète les versions disponibles de tous les packages existants dans le référentiel.
Le nouveau protocole permet d’augmenter considérablement la vitesse de travail avec crates.io et de résoudre les problèmes de mise à l’échelle avec une nouvelle augmentation du nombre de packages dans le référentiel.
Pour réduire les retards résultant du téléchargement d’un index complet, clairseméau lieu d’accéder à l’index via Git, télécharger directement via HTTPS uniquement les données d’index nécessaire, couvrant les dépendances d’un projet particulier. Pour retourner les données d’index, un nouveau service index.crates.io est impliqué.
Par défaut, le nouveau protocole est prévu pour une utilisation dans la branche Rust 1.70et avant cela, pour l’activer, vous pouvez définir la variable d’environnement “CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse» ou ajouter le paramètre ‘protocole=sparse’ déposer .cargo/config.toml.
Un autre des changements qui ressort est queet ajouté la macro » pin ! « Quoi vous permet de créer une structure Pin<&mut T> à partir de l’expression “T” avec épinglage local de son état (contrairement à Box :: pin, il n’alloue pas de mémoire sur le tas, mais se lie au niveau de la pile).
En plus de cela, nous pouvons également trouver que un gestionnaire d’erreur d’allocation de mémoire par défaut est proposéqui est utilisé lors de l’utilisation du package de mappage standard.
Les applications qui permettent uniquement alloc (pas std) appellera maintenant le contrôleur “panic!” sur les échecs d’allocation de mémoire, qui peuvent éventuellement être interceptés avec “#[panic_handler]». Les programmes qui utilisent la bibliothèque std imprimeront toujours les informations d’erreur sur stderr et échoueront.
Parmi les autres changements qui se démarquent :
- Une nouvelle partie de l’API a été déplacée vers stable, y compris les méthodes et les implémentations de traits qui ont été stabilisées
- L’attribut “const”, qui détermine la possibilité de l’utiliser dans n’importe quel contexte à la place des constantes, est utilisé dans le VecDeque::new.
- La plate-forme Android nécessite désormais au moins NDK r25 (API 19), c’est-à-dire que la version minimale d’Android prise en charge a été portée à 4.4 (KitKat).
- Le troisième niveau de support pour la plate-forme Sony PlayStation Vita (armv7-sony-vita-newlibeabihf) a été implémenté.
- Le troisième niveau implique un support de base, mais sans tests automatisés, publication de versions officielles et vérification de la compilabilité du code.
Siestes intéressé à en savoir plus, Vous pouvez vérifier les détails dans le lien suivant.
Enfin, pour ceux qui sont Intéressé par une mise à niveau à partir d’une version précédente de Rust installé via rustup, vous pouvez obtenir la nouvelle version de Rust 1.68.0 avec :
rustup update stable