Se ha lanzado la versión 1.13.0 de la plataforma Tokio, diseñada para crear aplicaciones de alto rendimiento basadas en la arquitectura de eventos en el lenguaje Rust, que admite multihilos y procesamiento de solicitudes de red de manera asíncrona. El proyecto está escrito en Rust y se distribuye bajo la licencia MIT. La nueva versión destaca la expansión de la documentación, varias correcciones en el subsistema de red y el sistema de sincronización.
Tokio incluye los siguientes componentes:
- Un programador de entrada/salida multihilo, cuya función es proporcionar recursos solo a aquellos hilos (en el contexto de la ejecución paralela) que cumplen ciertas condiciones, lo que permite evitar condiciones de carrera, que a menudo se encuentran en programas escritos en lenguajes sin gestión segura de memoria y recursos;
- Un backend para asegurar la compatibilidad con los mecanismos de multiplexión de conexiones proporcionados en varios sistemas operativos, tales como epoll, kqueue e IOCP;
- Tipos y enlaces con implementación de sockets TCP y UDP asíncronos.
- Herramientas para ejecutar tareas de manera asíncrona, incluyendo primitivas de sincronización, canales y tiempos de espera.
- API para realizar entrada/salida asíncrona, abarcando sockets TCP/UDP, operaciones de archivos, y herramientas de gestión de señales y procesos.
Los desarrolladores destacan características de su producto como un alto rendimiento, comparable a la velocidad en ‘hardware puro’, excelente escalabilidad y fiabilidad, aseguradas por el sistema de tipos y el modelo de paralelismo del lenguaje Rust.
El repositorio cuenta con más de 500 colaboradores, entre los cuales se encuentran representantes de AWS, Azure, Comcast, Dropbox y Facebook. Tokio depende de productos tales como:
- hyper: implementación rápida y segura de HTTP/1 y HTTP/2 para Rust;
- warp: un framework liviano para de un servidor web, enfocado en alta velocidad de operación;
- tracing: un framework para trazabilidad a nivel de aplicación y diagnóstico con consideración de asíncronía;
- rdbc: biblioteca para conectar bases de datos MySQL, Postgres y SQLite a productos en el lenguaje de programación Rust;
- bytes: utilidades para trabajar con bytes, incluyendo buffers de bytes eficientes.
Fuente: opennet.ru
