Wydano wersję 1.13.0 platformy Tokio, przeznaczonej do tworzenia wydajnych aplikacji w języku Rust, opartych na architekturze zdarzeniowej (Event-driven), wspierającej wielowątkowość oraz obsługę zapytań sieciowych w trybie asynchronicznym. Projekt został napisany w języku Rust i jest udostępniany na licencji MIT. W nowej wersji wprowadzono rozszerzenie dokumentacji oraz szereg poprawek w subsystemie sieciowym i systemie synchronizacji.
Tokio obejmuje następujące komponenty:
- Wielowątkowy harmonogram wejścia/wyjścia, którego działanie opiera się na przydzielaniu zasobów tylko tym wątkom (w kontekście równoległego wykonywania), które spełniają określone warunki, co pozwala uniknąć stanów wyścigu, często spotykanych w programach pisanych w językach bez bezpiecznego zarządzania pamięcią i zasobami;
- Backend dla zapewnienia zgodności z różnymi mechanizmami multiplexingu połączeń dostępnymi w systemach operacyjnych, takimi jak epoll, kqueue i IOCP;
- Typy i powiązania z realizacją asynchronicznych gniazd TCP i UDP.
- Narzędzia do wykonywania zadań w trybie asynchronicznym, w tym prymitywy synchronizacji, kanały i timeouty.
- API do wykonywania asynchronicznego wejścia/wyjścia, obejmujące gniazda TCP/UDP, operacje na plikach, zarządzanie sygnałami i procesami.
Deweloperzy podkreślają takie cechy swojego produktu, jak wysoka wydajność, porównywalna z prędkością działania na 'czystym sprzęcie', doskonała skalowalność oraz niezawodność, zapewniona przez system typów i model równoległości w języku Rust.
Repozytorium liczy ponad 500 uczestników, w tym przedstawicieli AWS, Azure, Comcast, Dropbox i Facebooka. Jako zależności Tokio wykorzystuje takie produkty, jak:
- hyper: szybka i bezpieczna realizacja HTTP/1 i HTTP/2 dla Rust;
- warp: lekki framework do serwer WWWzorientowany na dużą wydajność;
- tracing: framework do śledzenia na poziomie aplikacji i diagnostyki z uwzględnieniem asynchroniczności;
- rdbc: biblioteka do łączenia baz danych MySQL, Postgres i SQLite z aplikacjami w języku Rust;
- bytes: Narzędzia do pracy z bajtami, w tym efektywne bufory bajtowe.
Źródło: opennet.ru
