Tokio, un runtime asynchrone pour le langage Rust, a atteint le statut 1.0. Conçu pour écrire des applications réseau stables, le runtime comprend des API asynchrones pour TCP et UDP, des minuteries et un planificateur multi-thread qui améliore considérablement la performance et la latence.
Disponible sur GitHub, Tokio 1.0 est disponible depuis fin décembre. Introduit pour la première fois il y a plus de quatre ans, le runtime asynchrone de Rust est devenu dans l’intervalle plus facile à utiliser et plus puissant, comme l’ont déclaré ses développeurs. Mais ces derniers font aussi remarquer qu’une évolution importante du projet a causé quelques problèmes : certaines bibliothèques ont été nécessaires pour suivre les nombreux changements et les messages d'erreur confus résultant de la dépendance accidentelle de plusieurs versions de Tokio. Mais la version 1.0 de Tokio met fin à ces perturbations.
Pour l’instant, l’équipe ne prévoit pas de livrer une version 2.0 de Tokio, et promet de laisser vivre cette version pendant au moins trois ans. Les développeurs précisent aussi qu’ils fourniront un support pour Tokio 1.0 pendant au moins cinq ans. Et sa politique MSRV (minimum supported Rust version) de six mois pour Rust sera maintenue. Cependant, « ce n’est pas parce que la stabilité est atteinte que la technologie va stagner », ont-ils aussi déclaré. En 2021, le projet se concentrera sur des domaines tels que :
- Ajout de l’attribut Stream dans Rust, pour les services d'itération asynchrone : Une fois que l’attribut Stream aura été poussé dans la bibliothèque standard de Rust, les utilitaires Stream pourront être déplacés à l’intérieur du Crate Tokio lui-même. (Les Crates complètent les bibliothèques de base du langage Rust).
- Implementation de l’interface io_uring : une interface Linux pour les opérations asynchrones de tous types d'I/O, y compris les disques, tout en réduisant le nombre d'appels système. Avec io_uring, Tokio peut fournir des opérations de système de fichiers véritablement asynchrones.
- Intégration du traçage : intégration plus poussée entre le traçage et le reste de la pile Tokio, afin d’offrir plus de visibilité sur les éléments internes de Tokio. Cette intégration fait partie de l’effort visant à définir une histoire de premier ordre sur l'exploitation des applications Tokio. Le Crate de traçage fournit déjà l'infrastructure nécessaire. Les développeurs prévoient aussi de développer et d’améliorer l'écosystème du code de traçage.
- La pile Tokio se focalisera sur Tower, un ensemble de composants réutilisables pour construire des clients et des serveurs fiables.
Tokio a été utilisé par des entreprises comme Discord, Fly.io, la Zcash Foundation et l'équipe de développement AWS Lambda pour améliorer la fiabilité et les performances du réseau. Il a également été utilisé dans le runtime Deno pour JavaScript et TypeScript. Un tutoriel explique comment démarrer avec Tokio.
Commentaire