Tokio est une bibliothèque logicielle pour le langage de programmation Rust. Il fournit un environnement d'exécution et des fonctions qui permettent l'utilisation d', permettant la concurrence en ce qui concerne l'achèvement des tâches.
Tokio est sorti en pour Rust, un langage de programmation à usage général. Développé par Carl Lerche, Tokio a commencé comme un framework d'application réseau et prend en charge des fonctionnalités telles que l'écoute et le broadcast de socket, permettant le transfert de messages entre ordinateurs.
Histoire
Tokio a débuté en par Carl Lerche en tant que framework d'application réseau pour Rust construit sur des futures, permettant un middleware basé sur le réseau et une implémentation , ou asynchrone, de l'intérêt de préparation du réacteur. Tokio s'est inspiré de Finagle, un système d'appel de procédure à distance asynchrone (RPC) basé sur Scala développé par Twitter pour les machines virtuelles Java (JVM) et permettant aux systèmes distribués de communiquer au sein d'une JVM. Tokio utilise la bibliothèque Rust de niveau inférieur mio, utilisant elle-même des appels système tels que (Linux), (FreeBSD) et l'API du (IOCP) (Windows). Pour Linux, il peut également utiliser via tokio-uring. Le nom « Tokio » est dérivé de Tokyo et mio. La version préliminaire de Tokio est sortie en , suivie d'une sortie complète en . En 2017, Tokio a reçu une subvention du fonds de soutien Open Source de Mozilla. En , Tokio a financé son premier contributeur rémunéré, Alice Ryhl, pour son travail de développement du projet et d'assistance à ses utilisateurs.
Bien que Rust prenne en charge les fonctions asynchrones depuis la version 1.39, publiée en , il ne fournit aucune fonctionnalité pour les exécuter, nécessitant un environnement d'exécution externe pour cet usage. Tokio fournit un environnement d'exécution qui utilise un planificateur de multithread. Les futurs de Rust sont évalués paresseusement, ce qui oblige les fonctions à appeler .await avant d'effectuer une tâche. Lorsque .await est invoqué, l'environnement d'exécution de Tokio peut suspendre le futur d'origine jusqu'à ce que ses I/O soient terminées et réactiver une tâche différente qui est prête à être traitée.
Les utilisateurs de Tokio incluent les équipes de développement derrière Discord et AWS Lambda. L'environnement d'exécution JavaScript et TypeScript Deno utilise Tokio en arrière-plan, contrairement à l'environnement d'exécution JavaScript Node.js, qui utilise la bibliothèque .
Caractéristiques
Code asynchrone Tokio permet l'utilisation de fonctions asynchrones dans Rust via la création d'un environnement d'exécution asynchrone. Cela peut être réalisé via la macro #[tokio::main].
Par exemple: #[tokio::main] async fn main() -> Result<()> { let url = "https://en.wikipedia.org/"; let text = reqwest::get(url).await?.text().await?; println!("{}", text); Ok(()) } Dans cet exemple, la librairie reqwest est utilisée pour réclamer le code HTML de la page de Wikipédia en anglais. Pour garantir que la demande ne soit pas traitée immédiatement, Tokio encapsule l'appel de la fonction dans un environnement d'exécution asynchrone, attendant que la demande soit terminée avant d'appeler println().
Tokio inclut également une version de la bibliothèque standard Rust conçue pour être utilisée de manière asynchrone. Par exemple, tokio::fs::read_to_end(), qui lit le contenu d'un fichier, est la version asynchrone de std::fs::read_to_end(). De plus, Tokio prend en charge , une interface d'appel système d'I/O asynchrone Linux, dans une librairie séparée nommée tokio-uring.
Le modèle de coroutine Tokio permet également aux utilisateurs de créer des tâches, qui sont des coroutines sans pile, à l'aide d'une fonction tokio::spawn(). Les tâches s'exécutent au niveau de l'utilisateur, offrant une concurrence même lorsqu'il n'y a qu'un seul thread.
Écoute de socket Tokio est capable d'écouter sur une socket via une approche . En particulier, la structure TcpListener lie un auditeur de socket TCP (Transmission Control Protocol) à une adresse et exécute une fonction de manière asynchrone.
Broadcasting Tokio fournit un type de canal broadcast, permettant de diffuser des messages à plusieurs récepteurs. Lors de l’envoi d’un message, celui-ci est reçu par ces récepteurs. Cela permet la communication en temps réel et les systèmes distribués, entre autres applications.
References
Liens externes
Catégorie:Logiciel libre sous licence MIT Catégorie:Logiciel sorti en 2020