Au total, Rust progresse dans les 26 objectifs de son projet pour 2024. Selon les membres du Leadership Council, le projet se concentre sur les closures asynchrones et la finalisation de ses objectifs de développement Rust pour les premiers mois de l’année 2025. Citées comme un objectif phare de Rust, les closures asynchrones sont considérées comme stables depuis décembre par le conseil. La mise à jour des objectifs du projet de décembre a été publiée le 23 janvier. La version 1.85 de Rust, prévue pour le 20 février et actuellement en version bêta, inclura ce support.
L'objectif est de rapprocher l'expérience asynchrone de Rust de celle de Rust synchrone. Parmi les capacités essentielles, le conseil de direction cite la stabilisation des closures asynchrones pour garantir une plus grande variété d'API liées à l'asynchronisme et la résolution du problème lié à « send », qui bloque l'utilisation généralisée des fonctions asynchrones dans les traits. En outre, la stabilisation des caractéristiques du langage utilisé par Rust pour le projet Linux est en grande partie achevée, mais il reste encore du travail.
D’autres évolutions
Les membres du conseil de direction de Rust font également état de progrès dans la notation de type return, qui n'a pas encore atteint le stade stable. Les fonctions asynchrones dans les traits n'étaient pas encore considérées comme compatibles dyn- au moment de la publication. Des travaux sont en cours pour prototyper une implémentation pour le builder async drop, même si ces travaux sont considérés comme expérimentaux. Les discussions sur l'itération asynchrone ont été qualifiées de fructueuses, mais elles ne font pas l'objet d'un consensus général. D'autres discussions sont prévues pour le premier semestre de cette année. La version finale de Rust 2024 devrait faire partie de Rust 1.85.
Les constructeurs de Rust ont par ailleurs effectué des refactorings au cours des six derniers mois qui sont nécessaires pour qu'un prototype min_generic_const_args puisse étendre les génériques portant sur les valeurs constantes. De plus, les cargo-semver-checks ont commencé à inclure les paramètres génériques dans le schéma, de façon à avoir des lints plus précis. Une esquisse de conception a également été élaborée pour les changements dans le support JSON de rustdoc, ce qui aiderait le linting d'éléments cross-crate. Cela nécessite des extensions du compilateur.
Des efforts complémentaires
D'autres efforts ont été faits pour atteindre les objectifs du projet. Ainsi, des progrès portent sur l'ajout de traits const et l'implémentation dans le compilateur. Un travail actuel sur Ergonomic Ref-Counting se concentre sur l'identification des types « clonables à moindre coût » et sur la simplification de la création de closures qui les clonent au lieu de les déplacer.
La stabilité de Znext=solver=coherence est assurée dans la version 1.84. Enfin, un correctif empêche cargo-script de surcharger le profil de sortie a été posté et fusionné. Certains objectifs n'ont pas été mis à jour le mois dernier. C’est le cas du type associé position impl Trait, un cache de construction à l'échelle de l'utilisateur, et la mise en œuvre de « doctests fusionnés » pour économiser du temps doctest. De plus, des alternatives aux scripts de compilation en bac à sable seront étudiées plutôt que de poursuivre cet objectif jusqu'au premier semestre 2025.
Commentaire