Tokio (logiciel)
From Wikipedia, the free encyclopedia
| Créateur | Carl Lerche |
|---|---|
| Première version | [1] et [2] |
| Dernière version | 1.48.0 ()[3] |
| Dépôt | github.com/tokio-rs/tokio |
| Écrit en | Rust |
| Système d'exploitation | macOS, Windows, Linux, FreeBSD, WebAssembly |
| Type |
Bibliothèque d'exécution (en) Rust library (d) |
| Licence | Licence MIT |
| Documentation | tokio.rs/tokio/tutorial |
| Site web | tokio.rs |
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'I/O asynchrones (en), permettant la concurrence en ce qui concerne l'achèvement des tâches[4],[5],[6].
Tokio est sorti en août 2016 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.
Tokio a débuté en août 2016 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 I/O non-bloquante (en), 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 epoll (en) (Linux), kqueue (en) (FreeBSD) et l'API du port d'achèvement d'entrée/sortie (en) (IOCP) (Windows). Pour Linux, il peut également utiliser io_uring (en) via tokio-uring[7],[8],[9]. Le nom « Tokio » est dérivé de Tokyo et mio[10]. La version préliminaire de Tokio est sortie en janvier 2017[11], suivie d'une sortie complète en décembre 2020[12],[13]. En 2017, Tokio a reçu une subvention du fonds de soutien Open Source de Mozilla[14]. En avril 2021, Tokio a financé son premier contributeur rémunéré, Alice Ryhl, pour son travail de développement du projet et d'assistance à ses utilisateurs[15].
Bien que Rust prenne en charge les fonctions asynchrones depuis la version 1.39, publiée en novembre 2019[16], il ne fournit aucune fonctionnalité pour les exécuter, nécessitant un environnement d'exécution externe pour cet usage[17]. Tokio fournit un environnement d'exécution qui utilise un planificateur de vol de travail (en) multithread[12]. Les futurs de Rust sont évalués paresseusement, ce qui oblige les fonctions à appeler .await avant d'effectuer une tâche[18]. 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[19].
Les utilisateurs de Tokio incluent les équipes de développement derrière Discord et AWS Lambda[12]. 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 libuv (en)[20].
