Version 1.13.0 av plattformen Tokio har slÀppts, som Àr avsedd för att skapa högpresterande applikationer pÄ Rust baserat pÄ en hÀndelsestyrd arkitektur, med stöd för flertrÄdning och asynkron hantering av nÀtverksförfrÄgningar. Projektet Àr skrivet i Rust och distribueras under MIT-licensen. I den nya versionen har dokumentationen utökats, och en rad korrigeringar har gjorts i nÀtverksdelen och synkroniseringssystemet.
Tokio innehÄller följande komponenter:
- En flertrÄdande in-/utplanerare vars arbete bestÄr av att tillhandahÄlla resurser endast till de trÄdar (i kontexten av parallell exekvering) som uppfyller specifika villkor, vilket gör det möjligt att undvika race conditions, vilket ofta förekommer i program skrivna i sprÄk utan sÀker minnes- och resursförvaltning;
- Backend för att sÀkerstÀlla kompatibilitet med de mekanismer för anslutningsmultiplexering som tillhandahÄlls i olika operativsystem, sÄsom epoll, kqueue och IOCP;
- Typer och bindningar med implementation av asynkrona TCP- och UDP-sockets.
- Verktyg för att utföra uppgifter asynkront, inklusive synkroniseringsprimitiver, kanaler och tidsgrÀnser.
- API för att utföra asynkront in-/ut, som omfattar TCP/UDP-sockets, filoperationer, hantering av signaler och processer.
Utvecklarna pÄpekar sÄdana egenskaper hos sin produkt som hög prestanda, jÀmförbar med hastigheten pÄ "rÄ hÄrdvara", utmÀrkt skalbarhet och tillförlitlighet, som sÀkerstÀlls av typ-systemet och parallellitetsmodellen i Rust.
Repositoryt har över 500 medlemmar, inklusive representanter frÄn AWS, Azure, Comcast, Dropbox och Facebook. Som beroenden anvÀnds produkter som:
- hyper: en snabb och sÀker implementation av HTTP/1 och HTTP/2 för Rust;
- warp: ett lÀttviktsramverk för webbservernmed fokus pÄ hög hastighet;
- tracing: ett ramverk för applikationstracing och diagnos med hÀnsyn till asynkronitet;
- rdbc: ett bibliotek för att ansluta till MySQL-, Postgres- och SQLite-databaser med Rust-applikationer;
- bytes: Verktyg för att arbeta med byte, inklusive effektiva bytebuffertar.
KĂ€lla: opennet.ru
