ΠΡΠΈΡΡΠΎΡ Π₯Π΅Π»Π²ΠΈΠ³ (Christoph Hellwig), ΠΌΡΠΉΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌ DMA, KVM, Slab Allocator ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ PowerPC Π² ΡΠ΄ΡΠ΅ Linux, ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΠΎ ΠΎΡΠΊΠ°Π·Π°Π²ΡΠΈΠΉΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π² ΡΠ΄ΡΠΎ Rust-ΠΎΠ±Π²ΡΠ·ΠΊΠΈ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ DMA, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΠ»ΡΡ ΠΊ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ» ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Rust Π² ΡΠΎΡΡΠ°Π²Π΅ ΡΠ΄ΡΠ°, ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ Rust for Linux. ΠΠΎ ΠΌΠ½Π΅Π½ΠΈΡ ΠΡΠΈΡΡΠΎΡΠ° ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π½Ρ, ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΈ Π½Π΅ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Ρ Ρ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΈ Π½Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΊ ΡΠ΄ΡΡ.
ΠΡΠΈΡΡΠΎΡ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±ΡΠ°ΡΠΈΠ» Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ Π² ΠΏΡΠ°Π²ΠΈΠ»Π°Ρ ΡΠΊΠ°Π·Π°Π½Π° Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΌΡΠΉΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΌΠΎΠ³ΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ Π² ΠΈΡ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠ΄Π°, ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ³ΠΎ Ρ Rust. ΠΠΎ ΡΠ»ΠΎΠ²Π°ΠΌ ΠΡΠΈΡΡΠΎΡΠ°, Π² Π»ΠΈΡΠ½ΠΎΠΉ Π±Π΅ΡΠ΅Π΄Π΅ ΠΠΈΠ½ΡΡ Π’ΠΎΡΠ²Π°Π»ΡΠ΄ Π·Π°ΡΠ²ΠΈΠ», ΡΡΠΎ ΠΎΠ½ ΡΠ²ΡΡΠ΄ΠΎ Π½Π°ΠΌΠ΅ΡΠ΅Π½ ΠΏΡΠΈΠ½ΡΡΡ Π² ΡΠ΄ΡΠΎ Rust-ΠΊΠΎΠ΄, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° Π²ΠΎΠ·ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΌΡΠΉΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ². Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΈ ΠΌΡΠΉΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌ ΡΠ΄ΡΠ° ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠΈΠ΄ΡΡΡΡ ΠΈΠΌΠ΅ΡΡ Π΄Π΅Π»ΠΎ Ρ Rust, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, Ρ ΠΎΡΡΡ ΠΎΠ½ΠΈ ΡΡΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅Ρ.
ΠΡΠΈΡΡΠΎΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΡΡΠ°Π²Π½ΠΈΠ» ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ Rust-ΠΎΠ±Π²ΡΠ·ΠΎΠΊ Ρ ΡΠ°ΠΊΠΎΠ²ΠΎΠΉ ΠΎΠΏΡΡ ΠΎΠ»ΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°ΡΠΏΠΎΠ»Π·ΡΡΡΡ Π½Π° Π²ΡΠ΅ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ΄ΡΠ° ΠΈ ΠΏΡΠΈΠ²Π΅Π΄ΡΡ ΠΊ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. ΠΠ· Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠ΄ΡΠΎ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ·ΡΠΊΠ°Ρ , Π±Π΅Π· ΡΡΡΠΊΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΊΠ°ΠΊΠΎΠΉ ΡΠ·ΡΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ. ΠΠΎ ΡΠ»ΠΎΠ²Π°ΠΌ ΠΡΠΈΡΡΠΎΡΠ°, ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ΡΠΌΠ΅ΡΠ°Π½Π½ΠΎΠΉ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π° ΡΡΠ°Π»Π° Π΄Π»Ρ Π½Π΅Π³ΠΎ Ρ ΡΠ΄ΡΠΈΠΌ ΠΊΠΎΡΠΌΠ°ΡΠΎΠΌ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π² ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° Π½Π° Π΄ΡΡΠ³ΠΎΠΉ, Π° Π·Π°ΡΠ΅ΠΌ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ.
ΠΡΠΈ ΡΡΠΎΠΌ ΠΡΠΈΡΡΠΎΡ ΠΏΡΠΎΡΠΈΡ ΠΏΠΎΡΡΠ½ΠΈΡΡ Π΅ΠΌΡ ΡΠ΅Π»Ρ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Rust Π² ΡΠ΄ΡΠΎ. ΠΡΠ»ΠΈ ΡΠ΅Π»Ρ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡΡ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΡ ΠΏΡΠΈ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΏΠ°ΠΌΡΡΡΡ, ΡΠΎ ΠΏΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΠ·Π°ΡΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°. Π‘ ΡΡΡΡΠΎΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΠΈΠ΅ Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½ΠΎ ΡΠ΅Π°Π³ΠΈΡΡΡΡ Π΄Π°ΠΆΠ΅ Π½Π° ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΡΠ΅ Π²Π΅ΡΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΠΎ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅ΠΎΠ΄ΠΎΠ»Π΅ΡΡ ΡΠ°Π·ΡΡΠ² ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΡΡΡΡ ΡΠ΄ΡΠ°, Π½Π΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠ΅ΠΉ Π΄Π°ΠΆΠ΅ ΠΏΡΠΎΡΡΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΏΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ°ΡΡΡΡ, ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠ΅ΠΉΡΡ ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΡ ΡΡΡΠΎΠ³ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ». ΠΡΠ»ΠΈ ΠΆΠ΅ ΡΠ΅Π»Ρ Π² ΡΠΏΡΠΎΡΠ΅Π½ΠΈΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ², ΡΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π΅ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΡΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ Π½ΠΎΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΡ Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° Π±Π΅Π· ΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½Π½ΡΡ Π»ΡΠ΄Π΅ΠΉ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ ΡΠ΄ΡΠ° Π² ΡΠ°Π±ΠΎΡΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ.
Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΊΠΎΠ² Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Rust Π² ΡΠ΄ΡΠΎ, ΡΠΎ ΠΈΠΌΠΈ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ΅Π»ΠΈ:
- ΠΠ°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° ΡΠ·ΡΠΊΠ΅ Rust ΡΠ½ΠΈΠ·ΠΈΡ ΡΠΈΡΠΊ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΏΠ°ΠΌΡΡΡΡ ΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ Π³ΠΎΠ½ΠΊΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΊΠ»ΡΡΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ.
- ΠΡΠΉΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΠ΅ ΡΠ΅ΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Ρ ΡΡΡΡΠΎΠΌ Π³Π°ΡΠ°Π½ΡΠΈΠΉ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ ΡΠ·ΡΠΊΠΎΠΌ Rust.
- ΠΠ°Π»ΠΈΡΠΈΠ΅ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ·ΡΠΊΠ° Rust, ΡΠΏΡΠΎΡΡΠΈΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΡΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ² ΠΈ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ.
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΠΏΡΠΈΠ²Π»Π΅ΡΡΡ ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠ΄ΡΠ° Π½ΠΎΠ²ΡΡ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ².
- ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Rust ΡΠΏΡΠΎΡΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Rust for Linux Π²Π²Π΅Π΄Π΅Π½ΠΎ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠΌΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ API, ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, unsafe-Π±Π»ΠΎΠΊΠΎΠ² ΠΈ ΠΈΠ½Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΡΠΈΠΏΠΎΠ².
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
