Version 1.13.0 af Tokio-platformen er blevet frigivet, som er designet til at udvikle højtydende applikationer i Rust baseret på hændelsesdrevet arkitektur, der understøtter multitrådning og håndtering af netværksanmodninger i asynkront mode. Projektet er skrevet i Rust og distribueres under MIT-licensen. I den nye version bemærkes udvidelse af dokumentationen, en række rettelser i netværkssystemet og synkroniseringssystemet.
Tokio indeholder følgende komponenter:
- En multitrådet input/output-planlægger, hvis opgave er at give ressourcer kun til de tråde (i konteksten af parallel udførelse), der opfylder bestemte betingelser, hvilket hjælper med at undgå race-tilstande, der ofte opstår i programmer skrevet i sprog uden sikker hukommelses- og ressourcehåndtering;
- Backend for at sikre kompatibilitet med de mekanismer til multiplexing, der findes i forskellige operativsystemer, såsom epoll, kqueue og IOCP;
- Typer og bindinger med implementering af asynkrone TCP- og UDP-sockets.
- Værktøjer til at udføre opgaver i asynkront mode, herunder synkroniseringsprimitive, kanaler og tidsafbrud.
- API til at udføre asynkron input/output, der dækker TCP/UDP-sockets, filoperationer, signal- og proceskontrol.
Udviklerne påpeger sådanne funktioner ved deres produkt, som høj ydelse, der er sammenlignelig med hastigheden for 'bare metal', fremragende skalerbarhed og pålidelighed som sikres af typesystemet og parallelisme-modellen i Rust-sproget.
Repositoryet tæller over 500 deltagere, herunder repræsentanter fra AWS, Azure, Comcast, Dropbox og Facebook. Som afhængighed bruger Tokio produkter som:
- hyper: hurtig og sikker implementering af HTTP/1 og HTTP/2 til Rust;
- warp: et letvægtsframework til webserver, fokuseret på høj hastighed;
- tracing: framework til applikationsniveau tracing og diagnose med hensyn til asynkronitet;
- rdbc: bibliotek til at forbinde MySQL, Postgres og SQLite databaser til produkter skrevet i Rust-programmeringssproget;
- bytes: Værktøjer til at arbejde med bytes, herunder effektive byte-buffere.
Kilde: opennet.ru
