ΠΠ²ΡΠΎΡ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ Π½Π° ΡΠ·ΡΠΊΠ΅ Rust web-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° actix-web ΡΠ΄Π°Π»ΠΈΠ» ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π½Π° Π½Π΅Π³ΠΎ ΠΎΠ±ΡΡΡΠΈΠ»Π°ΡΡ ΠΊΡΠΈΡΠΈΠΊΠ° Π·Π° «Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅» ΡΠ·ΡΠΊΠ° Rust. Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ actix-web, ΠΏΠ°ΠΊΠ΅Ρ Ρ ΠΊΠΎΡΠΎΡΡΠΌ Π±ΡΠ» Π·Π°Π³ΡΡΠΆΠ΅Π½ Π±ΠΎΠ»Π΅Π΅ 800 ΡΡΡΡΡ ΡΠ°Π·, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΡΡΠ°ΠΈΠ²Π°ΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΠ·ΡΠΊΠ΅ Rust ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ http-ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ Π½Π° Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ Π»ΠΈΠ΄ΠΈΡΡΠ΅Ρ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ
ΡΠ΅ΡΡΠ°Ρ
web-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ².
ΠΠ΅Π·Π°Π΄ΠΎΠ»Π³ΠΎ Π΄ΠΎ ΠΈΠ½ΡΠΈΠ΄Π΅Π½ΡΠ° Π² issues Π½Π° GitHub Π±ΡΠ»ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΎ ΠΎ Π²ΡΡΠ²Π»Π΅Π½ΠΈΠΈ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ (Undefined Behaviour) Π² ΠΊΠΎΠ΄Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ° actix-web, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠ΅Π³ΠΎ Π² Π±Π»ΠΎΠΊΠ΅, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΌ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ unsafe (Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΡ
Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌΠΈ). ΠΠ²ΡΠΎΡ actix-web Π½Π΅ ΡΡΠ°Π» ΡΠ±ΠΈΡΠ°ΡΡ Π±Π»ΠΎΠΊ unsafe, Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π΅Π»Π°Π» Π²ΡΠ·ΠΎΠ² ΡΡΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°, ΡΡΠΎΠ±Ρ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»ΠΎ. ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ±ΡΠ°ΡΡ unsafe Π°Π²ΡΠΎΡ ΠΎΡΠΊΠ»ΠΎΠ½ΠΈΠ», ΡΡΡΠ»Π°ΡΡΡ Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΏΠΎΡΠ΅ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ Π·Π°ΡΠ²ΠΈΠ², ΡΡΠΎ ΠΎΠ½ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ unsafe Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈ ΡΠ²Π΅ΡΠ΅Π½ Π² Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ
Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ Π±Π»ΠΎΠΊΠΎΠ².
Π£ΡΠ°ΡΡΠ½ΠΈΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Ρ RustSec, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΡΠ²ΠΈΠ» Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Π½Π΅ ΡΠΎΠ³Π»Π°ΡΠΈΠ»ΡΡ ΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠ», ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ
unsafe-Π±Π»ΠΎΠΊΠΎΠ² Π² actix-web Π½Π΅ΠΎΠΏΡΠ°Π²Π΄Π°Π½Π½ΠΎ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΎΠ½ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»
ΡΡΠ°ΡΡΡ ΠΎ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ unsafe, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ, ΡΡΠ΅Π΄ΠΈ ΠΏΡΠΎΡΠ΅Π³ΠΎ Π±ΡΠ»ΠΎ ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎ, ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ Π² actix-web ΠΏΡΠΈΡΠΌ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌΠΈ (Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ
ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π½Π° ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ Π΄Π°Π½Π½ΡΠ΅) ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ use-after-free ΠΈ Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π° Rust.
ΠΠΎΡΠ»Π΅ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ ΡΡΠ°ΡΡΠΈ Π½Π° Reddit, Π² issues Π½Π° GitHub Π½Π°Π±Π΅ΠΆΠ°Π»ΠΈ ΡΡΠΎΠ»Π»ΠΈ ΠΈ Π°Π²ΡΠΎΡ actix-web Π±ΡΠ» ΠΏΠΎΠ΄Π²Π΅ΡΠ³Π½ΡΡ ΡΠΊΠ²Π°Π»Ρ ΠΊΡΠΈΡΠΈΠΊΠΈ ΠΈ ΠΎΡΠΊΠΎΡΠ±Π»Π΅Π½ΠΈΠΉ Π·Π° Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Rust. ΠΠ²ΡΠΎΡ Π½Π΅ Π²ΡΠ΄Π΅ΡΠΆΠ°Π» ΠΏΡΠΈΡ
ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π΄Π°Π²Π»Π΅Π½ΠΈΡ, ΡΠ΄Π°Π»ΠΈΠ» ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΈ Π½Π°ΠΏΠΈΡΠ°Π», ΡΡΠΎ Π·Π°Π²ΡΠ·Π°Π» Ρ Open Source.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru