Introduction
L'année 2025 a été marquante pour l'écosystème Rust. Ce langage, qui s'est solidement implanté ces dernières années dans les niches de la programmation système, du WebAssembly (WASM) et des outils en ligne de commande, continue de se développer activement. L'équipe de développement de Rust et la communauté ont publié une série de mises à jour importantes qui rendent le langage encore plus performant, sûr et pratique.
Dans cet article, nous analyserons les principales innovations de Rust en 2025 : de la stabilisation des itérateurs asynchrones aux améliorations du travail avec WebAssembly et à une nouvelle approche des macros. Si vous connaissez déjà Rust ou si vous commencez tout juste à vous intéresser au langage, cet aperçu vous aidera à comprendre où se dirige l'écosystème.
Stabilisation des itérateurs asynchrones (Async Iterator)
L'un des événements les plus attendus de 2025 a été la stabilisation des traits AsyncIterator et AsyncIteratorExt. Auparavant, le travail avec des flux de données asynchrones n'était possible que via des crates tiers, comme futures ou tokio-stream. Désormais, cette fonctionnalité est intégrée à la bibliothèque standard.
Qu'est-ce qui a changé ?
Vous pouvez maintenant écrire des générateurs asynchrones et les combiner avec des méthodes standard telles que map, filter, collect, directement dans Rust stable. Cela abaisse la barrière à l'entrée et réduit le nombre de dépendances.
// Exemple d'utilisation d'un itérateur asynchrone stable
use std::collections::VecDeque;
async fn process_stream() {
let stream = async_stream::stream! {
for i in 0..10 {
yield i * 2;
}
};
// Utilisation des méthodes intégrées
let result: Vec<i32> = stream
.map(|x| async move { x + 1 })
.filter(|x| async move { *x > 5 })
.collect()
.await;
println!("Résultat : {:?}", result);
}
De plus, les traits FromAsyncIterator et IntoAsyncIterator ont été stabilisés, ce qui permet de convertir facilement des collections synchrones en asynchrones et vice versa. Cela est particulièrement utile pour travailler avec des requêtes réseau ou des flux de fichiers.
Prise en charge améliorée de WebAssembly (WASM)
L'écosystème Rust et WASM a fait un grand pas en avant en 2025. La principale innovation est le support natif de l'interface WASI Preview 2 (WebAssembly System Interface). Auparavant, WASI était principalement expérimental, mais il est désormais stabilisé et recommandé pour une utilisation en production.
Qu'est-ce que cela apporte aux développeurs ?
- Accès au système de fichiers — WASI Preview 2 permet de travailler en toute sécurité avec des fichiers et des répertoires, ce qui était auparavant une limitation sérieuse.
- Capacités réseau — il est désormais possible de créer des serveurs et clients HTTP directement dans WASM, en utilisant des crates standard.
- Performances améliorées — le nouvel ABI (Application Binary Interface) réduit les frais généraux lors des appels de fonctions entre l'hôte et le module WASM.
// Exemple d'un serveur HTTP simple dans WASM utilisant WASI Preview 2
use wasi::http::handler;
use wasi::http::types::{Request, Response};
fn main() {
handler::serve(|req: Request| -> Response {
Response::new()
.with_status(200)
.with_body(b"Bonjour depuis Rust dans WASM!")
});
}
Il convient également de noter l'amélioration significative des outils de construction. wasm-pack a reçu une mise à jour qui permet de générer automatiquement des types TypeScript pour les fonctions exportées, ce qui simplifie l'intégration du code Rust avec les frameworks frontend.
Macros 2.0 : Nouvelle syntaxe et nouvelles possibilités
Le système de macros de Rust a toujours été puissant, mais difficile à apprendre. En 2025, l'équipe Rust a présenté Macros 2.0 — une nouvelle génération de macros déclaratives destinées à remplacer les anciennes macro_rules!.