ΠΠΈΠ³Π΅Π»Ρ ΠΡ Π΅Π΄Π° (Miguel Ojeda), Π°Π²ΡΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Rust-for-Linux, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ» Π΄Π»Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ ΡΠ΄ΡΠ° Linux ΠΏΡΡΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ² ΡΡΡΡΠΎΠΉΡΡΠ² Π½Π° ΡΠ·ΡΠΊΠ΅ Rust. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Rust ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½Π°Ρ, Π½ΠΎ ΡΠΆΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π° Π² Π²Π΅ΡΠΊΡ linux-next ΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ°Π·Π²ΠΈΡΠ° Π΄Π»Ρ Π½Π°ΡΠ°Π»Π° ΡΠ°Π±ΠΎΡΡ ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ»ΠΎΡΠ² Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ Π½Π°Π΄ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ ΡΠ΄ΡΠ°, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ² ΠΈ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΈΠ½Π°Π½ΡΠΈΡΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Google ΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ISRG (Internet Security Research Group), ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠ΅Π΄ΠΈΡΠ΅Π»Π΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ° Let’s Encrypt ΠΈ ΡΠΏΠΎΡΠΎΠ±ΡΡΠ²ΡΠ΅Ρ ΠΏΡΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ HTTPS ΠΈ ΡΠ°Π·Π²ΠΈΡΠΈΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ Π·Π°ΡΠΈΡΡΠ½Π½ΠΎΡΡΠΈ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°.
ΠΠ°ΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΡΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Rust Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²ΡΠΎΡΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ² ΠΈ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΡΠ΄ΡΠ°. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Rust ΠΏΡΠ΅ΠΏΠΎΠ΄Π½ΠΎΡΠΈΡΡΡ ΠΊΠ°ΠΊ ΠΎΠΏΡΠΈΡ, Π½Π΅ Π°ΠΊΡΠΈΠ²Π½Π°Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈ Π½Π΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠ°Ρ ΠΊ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Rust Π² ΡΠΈΡΠ»ΠΎ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΠ±ΠΎΡΠΎΡΠ½ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΊ ΡΠ΄ΡΡ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Rust Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΡΠΈΠ»ΠΈΡΠΌΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠ΅ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ, ΠΈΠ·Π±Π°Π²Π»Π΅Π½Π½ΡΠ΅ ΠΎΡ ΡΠ°ΠΊΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΠΎΡΠ»Π΅ Π΅Ρ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ, ΡΠ°Π·ΡΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Π½ΡΠ»Π΅Π²ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ ΠΈ Π²ΡΡ ΠΎΠ΄ Π·Π° Π³ΡΠ°Π½ΠΈΡΡ Π±ΡΡΠ΅ΡΠ°.
ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠ°ΠΌΡΡΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΡΡ Π² Rust Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΡΠ΅ΡΠ΅Π· ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΡΡΠ»ΠΎΠΊ, ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ Π²Π»Π°Π΄Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΠΈ ΡΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΆΠΈΠ·Π½ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² (ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ), Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅ΡΠ΅Π· ΠΎΡΠ΅Π½ΠΊΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΏΠ°ΠΌΡΡΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°. Rust ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ Π·Π°ΡΠΈΡΡ ΠΎΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ, ΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, Π»ΡΡΡΠ΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΡΡΠΈ (immutable) ΡΡΡΠ»ΠΎΠΊ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΠΈΠ»ΡΠ½ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ Π΄Π»Ρ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ.
Π Π½ΠΎΠ²ΠΎΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠ΅ ΠΏΠ°ΡΡΠ΅ΠΉ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΎ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΠΉ, Π²ΡΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΠΎΠΉ, Π²ΡΠΎΡΠΎΠΉ, ΡΡΠ΅ΡΡΠ΅ΠΉ ΠΈ ΡΠ΅ΡΠ²ΡΡΡΠΎΠΉ ΡΠ΅Π΄Π°ΠΊΡΠΈΠΉ ΠΏΠ°ΡΡΠ΅ΠΉ. Π Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ:
- Π ΡΠΈΡΡΠ΅ΠΌΡ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠΉ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Π½Π° Π±Π°Π·Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Intel Π±ΠΎΡΠ° 0DAY/LKP Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Rust ΠΈ Π½Π°ΡΠ°Π»Π°ΡΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ ΠΎΡΡΡΡΠΎΠ² ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ. ΠΠΎΡΠΎΠ²ΠΈΡΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Rust Π² ΡΠΈΡΡΠ΅ΠΌΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ KernelCI. Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Π±Π°Π·Π΅ GitHub CI ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½ΠΎ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ².
- ΠΠΎΠ΄ΡΠ»ΠΈ ΡΠ΄ΡΠ° Π½Π° Rust ΠΈΠ·Π±Π°Π²Π»Π΅Π½Ρ ΠΎΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ crate-Π°ΡΡΠΈΠ±ΡΡΠΎΠ² «#![no_std]» ΠΈ «#![feature(…)]».
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΡΡ ΡΠ±ΠΎΡΠΎΡΠ½ΡΡ ΡΠ΅Π»Π΅ΠΉ (.o, .s, .ll ΠΈ .i).
- Π ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡΡ ΠΏΠΎ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΠΏΡΠ°Π²ΠΈΠ»Π° Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² («//») ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° («///»).
- ΠΠ΅ΡΠ΅ΡΠ°Π±ΠΎΡΠ°Π½ ΡΠΊΡΠΈΠΏΡ is_rust_module.sh.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ (Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ) ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ² ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΡ Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ «CONFIG_CONSTRUCTORS».
- Π£ΠΏΡΠΎΡΠ΅Π½ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°ΠΌΠΈ: Guard ΠΈ GuardMut ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Ρ ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΈΠΏ.
- ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΏΡΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΡΡΡΡΠΎΠΉΡΡΠ².
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ «RwSemaphore», Π²ΡΡΡΡΠΏΠ°ΡΡΠ°Ρ Π² ΡΠΎΠ»ΠΈ ΠΎΠ±Π²ΡΠ·ΠΊΠΈ Π½Π°Π΄ Π‘ΠΈ-ΡΡΡΡΠΊΡΡΡΠΎΠΉ rw_semaphore.
- ΠΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ mmap Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ mm ΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ VMA (ΠΎΠ±Π²ΡΠ·ΠΊΠ° Π½Π°Π΄ ΡΡΡΡΠΊΡΡΡΠΎΠΉ vm_area_struct).
- ΠΡΠ°ΠΉΠ²Π΅Ρ GPIO PL061 ΠΏΠ΅ΡΠ΅Π²Π΅Π΄ΡΠ½ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠ° «dev_*!».
- ΠΡΠΎΠ²Π΅Π΄Π΅Π½Π° ΠΎΠ±ΡΠ°Ρ ΡΠΈΡΡΠΊΠ° ΠΊΠΎΠ΄Π°.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru