Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ пятом ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ Π½Π° языкС Rust ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ€Π΅ΠΆΠΈΠΌ unsafe

ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ Rust Foundation ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»Π° статистику, Π² соотвСтствии с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈΠ· 127 тысяч Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², прСдставлСнных Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ crates.io, Π±ΠΎΠ»Π΅Π΅ 24 тысяч (19.11%) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово «unsafe» для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ возмоТностСй, Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΡ… Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±Π»ΠΎΠΊΠ°Ρ… ΠΊΠΎΠ΄Π°, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, Π²Ρ‹Π·ΠΎΠ² Π²Π½Π΅ΡˆΠ½ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ статичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. 34.35% ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΡΠΎΠ²Π΅Ρ€ΡˆΠ°ΡŽΡ‚ прямыС Π²Ρ‹Π·ΠΎΠ²Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… crate-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ€Π΅ΠΆΠΈΠΌ «unsafe».

ΠžΡ‚ΠΌΠ΅Ρ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв использованиС Ρ€Π΅ΠΆΠΈΠΌΠ° «unsafe» обусловлСно Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠΊΠΎΠ΄Π°, написанного Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… языках ΠΈΠ»ΠΈ обращСния ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌ Π½Π° Π‘/C++. ΠŸΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ с наибольшим числом Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ «unsafe» ΠΏΡ€ΠΈΠ·Π½Π°Π½ Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Microsoft crate-ΠΏΠ°ΠΊΠ΅Ρ‚ windows, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ обвязкой Π½Π°Π΄ API ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Windows. Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ насчитываСт 36 ΠΌΠ»Π½. Π·Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ. Unsafe Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² самых популярных ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… syn (470 ΠΌΠ»Π½ Π·Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ), proc-macro2 (354 ΠΌΠ»Π½ Π·Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ) ΠΈ libc (345 ΠΌΠ»Π½ Π·Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ).

Для выявлСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π² ΠΊΠΎΠ΄Π΅, выполняСмом Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ «unsafe», ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ развиваСтся ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Miri, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ обращСния Π²Π½Π΅ Π³Ρ€Π°Π½ΠΈΡ† Π±ΡƒΡ„Π΅Ρ€ΠΎΠ², использованиС памяти послС Π΅Ρ‘ освобоТдСния, Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ использованиС Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, нСсоотвСтствиС bool значСниям 0 ΠΈΠ»ΠΈ 1), Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ» владСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ состояний Π³ΠΎΠ½ΠΊΠΈ ΠΈ ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ памяти.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru