Le langage de programmation Rust 1.94 introduit la nouvelle méthode array_windows, l'inclusion de configurations Cargo et la prise en charge de TOML 1.1 dans Cargo Rust 1.94 est désormais disponible, poursuivant l'accent mis par le langage sur les performances, la sécurité des types, la concurrence et la sécurité de la mémoire. L'une des principales nouveautés est la nouvelle méthode array_windows pour les tranches. Outre les itérateurs, Cargo, le gestionnaire de paquets Rust, bénéficie d'une fonctionnalité de restructuration : les fichiers de configuration prennent désormais en charge la clé include. De plus, Cargo analyse désormais la version 1.1 de TOML dans les manifestes et les fichiers de configuration, ce qui permet d'utiliser les nouvelles fonctionnalités syntaxiques de TOML et d'améliorer la compatibilité avec les outils.
Rust est un langage de programmation compilé multi-paradigme qui met l'accent sur la performance, la sûreté des types et la concurrence. Il assure la sécurité mémoire, ce qui signifie que toutes les références pointent vers une mémoire valide, sans nécessiter l'utilisation de techniques de gestion de la mémoire automatisée telles que le ramasse-miettes. Afin d'assurer la sécurité de la mémoire et d'empêcher une situation de compétition aux données, son « vérificateur d'emprunts » suit la durée de vie des objets de toutes les références dans un programme à la compilation.
Rust 1.94 est désormais disponible, poursuivant l'accent mis par le langage sur les performances, la sécurité des types, la concurrence et la sécurité de la mémoire. L'une des principales nouveautés est la nouvelle méthode array_windows pour les tranches, qui offre un moyen d'itérer sur des fenêtres adjacentes de taille fixe, renvoyant des références à des tableaux de longueur constante. Cela permet un traitement plus sûr et plus performant des éléments de données groupés, particulièrement utile lorsque la longueur de la fenêtre peut être déduite au moment de la compilation.
Outre les itérateurs, Cargo, le gestionnaire de paquets Rust, bénéficie d'une fonctionnalité de restructuration : les fichiers de configuration prennent désormais en charge la clé include. Cela permet une organisation et un partage plus clairs des détails de configuration, aidant les équipes à gérer les paramètres entre différents projets ou environnements. Il est à noter que les chemins de configuration inclus peuvent être marqués comme facultatifs, ce qui permet de s'adapter à différentes configurations entre développeurs ou scénarios de compilation. De plus, Cargo analyse désormais la version 1.1 de TOML dans les manifestes et les fichiers de configuration, ce qui permet d'utiliser les nouvelles fonctionnalités syntaxiques de TOML et d'améliorer la compatibilité avec les outils.
À la suite de ces mises à jour essentielles, Rust 1.94 propose également plusieurs API stabilisées et corrige divers bogues. Ces changements visent collectivement à améliorer l'expérience quotidienne des développeurs et à prendre en charge l'évolution des bases de code.
Fenêtres de tableaux
Rust 1.94 ajoute array_windows, une méthode d'itération pour les tranches. Elle fonctionne comme windows, mais avec une longueur constante, de sorte que les éléments de l'itérateur sont &[T; N] plutôt que &[T] de taille dynamique. Dans de nombreux cas, la longueur de la fenêtre peut même être déduite de la façon dont l'itérateur est utilisé !
Par exemple, une partie d'une énigme de l'Advent of Code 2016 consiste à rechercher des motifs ABBA : « deux caractères différents suivis de l'inverse de cette paire, comme xyyx ou abba ». Si nous supposons qu'il n'y a que des caractères ASCII, cela pourrait être écrit en balayant les fenêtres de la tranche d'octets comme ceci :
| Code Rust : | Sélectionner tout |
1 2 3 4 5 | fn has_abba(s: &str) -> bool { s.as_bytes() .array_windows() .any(|[a1, b1, b2, a2]| (a1 != b1) && (a1 == a2) && (b1 == b2)) } |
Le modèle d'argument de déstructuration dans cette fermeture permet au compilateur de déduire que nous voulons ici des fenêtres de 4. Si nous avions utilisé l'ancien itérateur .windows(4), cet argument serait alors une tranche que nous devrions indexer manuellement, en espérant que la vérification des limites d'exécution soit optimisée.
Inclusion de la configuration Cargo
Cargo prend désormais en charge la clé include dans les fichiers de configuration (.cargo/config.toml), ce qui permet une meilleure organisation, un meilleur partage et une meilleure gestion des configurations Cargo entre les projets et les environnements. Ces chemins d'inclusion peuvent également être marqués optional s'ils ne sont pas présents dans certaines circonstances, par exemple en fonction des choix des développeurs locaux.
| Code Rust : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 | # array of paths include = [ "frodo.toml", "samwise.toml", ] # inline tables for more control include = [ { path = "required.toml" }, { path = "optional.toml", optional = true }, ] |
Prise en charge de TOML 1.1 dans Cargo
Cargo analyse désormais TOML v1.1 pour les manifestes et les fichiers de configuration. Consultez les notes de mise à jour TOML pour connaître les modifications détaillées, notamment :
- Tableaux en ligne sur plusieurs lignes et avec des virgules de fin
- Caractères d'échappement de chaîne \xHH et \e- Secondes facultatives dans les heures (définies sur 0)
Par exemple, une dépendance comme celle-ci :
| Code Rust : | Sélectionner tout |
serde = { version = "1.0", features = ["derive"] }
... peut désormais être écrite comme suit :
| Code Rust : | Sélectionner tout |
1 2 3 4 | serde = { version = "1.0", features = ["derive"], } |
Notez que l'utilisation de ces fonctionnalités dans Cargo.toml augmentera votre MSRV (version minimale de Rust prise en charge) de développement pour nécessiter ce nouveau parseur Cargo, et les outils tiers qui lisent le manifeste devront peut-être également mettre à jour leurs parseurs. Cependant, Cargo réécrit automatiquement les manifestes lors de la publication afin de rester compatible avec les anciens parseurs. Il est donc toujours possible de prendre en charge une MSRV antérieure pour les utilisateurs de votre crate.
Source : Annonce Rust 1.94
Et vous ?
Pensez-vous que cette annonce est crédible ou pertinente ?
Quel est votre avis sur le sujet ?Voir aussi :
La version 1.93 du langage de programmation Rust est disponible, introduisant musl 1.2.5, des améliorations de l'allocateur et des attributs cfg sur les lignes asm!
Submergé par les bugs dans ses applications, la solution de Microsoft c'est de supprimer tout le code C et C++ de ses référentiels d'ici 2030, pour le remplacer par Rust
L'IA abaisse les barrières mais amplifie les mauvais patterns : les données Octoverse de GitHub révèlent la mécanique silencieuse qui redistribue les parts de marché entre langages de programmation
Vous avez lu gratuitement 2 765 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.