ΠΠ·Π΄Π°Π΄Π΅Π½Π° Π²Π΅ΡΡΠΈΡ 1.13.0 Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Tokio, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π²ΠΈΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Π΅Π·ΠΈΠΊΠ° Rust, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΡΠ±ΠΈΡΠΈΡ (Event-driven), ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ΄ΠΊΡΠ΅ΠΏΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ Π·Π°ΡΠ²ΠΊΠΈ Π² Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ. ΠΡΠΎΠ΅ΠΊΡΡΡ Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Π΅Π·ΠΈΠΊΠ° Rust ΠΈ ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ MIT. Π Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ ΡΠ΅ ΠΎΡΠ±Π΅Π»ΡΠ·Π²Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ°, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΡΠ΅Π΄ΠΈΡΠ° ΠΊΠΎΡΠ΅ΠΊΡΠΈΠΈ Π² ΠΌΡΠ΅ΠΆΠΎΠ²Π°ΡΠ° ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ.
Tokio Π²ΠΊΠ»ΡΡΠ²Π° ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ:
- ΠΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΈΠΊ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ Π·Π° Π²Ρ ΠΎΠ΄/ΠΈΠ·Ρ ΠΎΠ΄, ΡΠΈΡΡΠΎ ΡΠ°Π±ΠΎΡΠ° ΡΠ΅ ΡΡΡΡΠΎΠΈ Π² ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠ½Π΅ Π½Π° ΡΠ΅ΡΡΡΡΠΈ ΡΠ°ΠΌΠΎ Π½Π° ΡΠ΅Π·ΠΈ ΠΏΠΎΡΠΎΡΠΈ (Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅), ΠΊΠΎΠΈΡΠΎ ΠΎΡΠ³ΠΎΠ²Π°ΡΡΡ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡ, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π½Π°Ρ ΡΡΠ»ΠΎΠ²ΠΈΡ Π½Π° Π³ΠΎΠ½ΠΊΠ°, ΡΠ΅ΡΡΠΎ ΡΡΠ΅ΡΠ°Π½ΠΈ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ, Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π½Π° Π΅Π·ΠΈΡΠΈ Π±Π΅Π· Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΈ ΡΠ΅ΡΡΡΡΠΈΡΠ΅;
- ΠΠ΅ΠΊΠ΅Π½Π΄ Π·Π° ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΈΡΠ΅ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° ΠΌΡΠ»ΡΠΈΠΏΠ»Π΅ΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΠΊΠ°ΡΠΎ epoll, kqueue ΠΈ IOCP;
- Π’ΠΈΠΏΠΎΠ²Π΅ ΠΈ ΠΏΡΠΈΠ²ΡΡΠ·Π°Π½ΠΎΡΡΠΈ Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΈ TCP ΠΈ UDP ΡΠΎΠΊΠ΅ΡΠΈ.
- ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°Π΄Π°ΡΠΈ Π² Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΈ Π·Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ, ΠΊΠ°Π½Π°Π»ΠΈ ΠΈ ΡΠ°ΠΉΠΌΠ°ΡΡΠΈ.
- API Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π΅Π½ Π²Ρ ΠΎΠ΄/ΠΈΠ·Ρ ΠΎΠ΄, ΠΎΠ±Ρ Π²Π°ΡΠ°Ρ TCP/UDP ΡΠΎΠΊΠ΅ΡΠΈ, ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠΈΠ³Π½Π°Π»ΠΈ ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ.
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΠΎΡΠ±Π΅Π»ΡΠ·Π²Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠ΅Ρ Π½ΠΈΡ ΠΏΡΠΎΠ΄ΡΠΊΡ, ΠΊΠ°ΡΠΎ Π²ΠΈΡΠΎΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ, ΡΡΠ°Π²Π½ΠΈΠΌΠ° Ρ ΡΠ°Π±ΠΎΡΠ½Π°ΡΠ° ΡΠΊΠΎΡΠΎΡΡ Π½Π° "Π³ΠΎΠ»ΠΎ ΠΆΠ΅Π»ΡΠ·ΠΎ", ΠΎΡΠ»ΠΈΡΠ½Π° ΠΌΠ°ΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡ ΠΈ Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎΡΡ, ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π° ΠΎΡ ΡΠΈΠΏΠΎΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈ ΠΌΠΎΠ΄Π΅Π» Π½Π° ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·ΡΠΌ Π½Π° Π΅Π·ΠΈΠΊΠ° Rust.
Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΡ Π²ΠΊΠ»ΡΡΠ²Π° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ 500 ΡΡΠ°ΡΡΠ½ΠΈΠΊΠ°, ΡΡΠ΅Π΄ ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΠ΅Π»ΠΈΡΠ΅ Π½Π° AWS, Azure, Comcast, Dropbox ΠΈ Facebook. ΠΠ°ΡΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Tokio ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ:
- hyper: Π±ΡΡΠ·Π° ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° HTTP/1 ΠΈ HTTP/2 Π·Π° Rust;
- warp: Π»Π΅ΠΊ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π·Π° Π½Π° ΡΠ΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠ°, Π½Π°ΡΠΎΡΠ΅Π½ ΠΊΡΠΌ Π²ΠΈΡΠΎΠΊΠ° ΡΠΊΠΎΡΠΎΡΡ Π½Π° ΡΠ°Π±ΠΎΡΠ°;
- tracing: ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π·Π° ΡΡΠ°ΡΠΈΡΠΎΠ²ΠΊΠ° Π½Π° Π½ΠΈΠ²ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ° Ρ ΠΎΠ³Π»Π΅Π΄ Π½Π° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΡΡΡΠ°;
- rdbc: Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ MySQL, Postgres ΠΈ SQLite Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Π΅Π·ΠΈΠΊΠ° Rust;
- bytes: Π£ΡΠΈΠ»ΠΈΡΠΈ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ Π±Π°ΠΉΡΠΎΠ²Π΅, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΈ Π±Π°ΠΉΡΠΎΠ²ΠΈ Π±ΡΡΠ΅ΡΠΈ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
