ΠΠΈΠ³Π΅Π»Ρ ΠΡ Π΅Π΄Π° (Miguel Ojeda), Π°Π²ΡΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Rust-for-Linux, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ» Π΄Π»Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ ΡΠ΄ΡΠ° Linux ΠΏΡΡΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ² ΡΡΡΡΠΎΠΉΡΡΠ² Π½Π° ΡΠ·ΡΠΊΠ΅ Rust. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Rust ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½Π°Ρ, Π½ΠΎ ΡΠΆΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π° Π² Π²Π΅ΡΠΊΡ linux-next ΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ°Π·Π²ΠΈΡΠ° Π΄Π»Ρ Π½Π°ΡΠ°Π»Π° ΡΠ°Π±ΠΎΡΡ ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ»ΠΎΡΠ² Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ Π½Π°Π΄ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ ΡΠ΄ΡΠ°, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ² ΠΈ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΈΠ½Π°Π½ΡΠΈΡΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Google ΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ISRG (Internet Security Research Group), ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠ΅Π΄ΠΈΡΠ΅Π»Π΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ° Letβs Encrypt ΠΈ ΡΠΏΠΎΡΠΎΠ±ΡΡΠ²ΡΠ΅Ρ ΠΏΡΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ HTTPS ΠΈ ΡΠ°Π·Π²ΠΈΡΠΈΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ Π·Π°ΡΠΈΡΡΠ½Π½ΠΎΡΡΠΈ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°.
Ricurdativi chì i cambiamenti pruposti permettenu di utilizà Rust cum'è una seconda lingua per u sviluppu di drivers è moduli di kernel. U supportu di Rust hè presentatu cum'è una opzione chì ùn hè micca attivata per automaticamente è ùn hà micca risultatu in l'inclusione di Rust trà e dipendenze di custruzzione necessarie per u kernel. Utilizà Rust per sviluppà i drivers vi permetterà di creà drivers più sicuri è megliu cù u minimu sforzu, senza prublemi cum'è l'accessu à una zona di memoria dopu chì hè liberatu, dereferencing null pointers, è buffer overruns.
A gestione sicura di a memoria hè furnita in Rust à u tempu di compilazione attraversu a verificazione di riferimentu, tenendu traccia di a pruprietà di l'ughjettu è a vita di l'ughjettu (scopu), è ancu per a valutazione di a correttezza di l'accessu di memoria durante l'esekzione di codice. Rust furnisce ancu prutezzione contra i overflows integer, esige l'inizializazione obligatoria di i valori variabili prima di l'usu, gestisce l'errori megliu in a biblioteca standard, applica u cuncettu di referenze immutabili è variabili per difettu, offre una forte tipografia statica per minimizzà l'errori lògichi.
Π Π½ΠΎΠ²ΠΎΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠ΅ ΠΏΠ°ΡΡΠ΅ΠΉ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΎ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΠΉ, Π²ΡΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΠΎΠΉ, Π²ΡΠΎΡΠΎΠΉ, ΡΡΠ΅ΡΡΠ΅ΠΉ ΠΈ ΡΠ΅ΡΠ²ΡΡΡΠΎΠΉ ΡΠ΅Π΄Π°ΠΊΡΠΈΠΉ ΠΏΠ°ΡΡΠ΅ΠΉ. Π Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ:
- Π ΡΠΈΡΡΠ΅ΠΌΡ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠΉ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Π½Π° Π±Π°Π·Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ 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_*!Β».
- ΠΡΠΎΠ²Π΅Π΄Π΅Π½Π° ΠΎΠ±ΡΠ°Ρ ΡΠΈΡΡΠΊΠ° ΠΊΠΎΠ΄Π°.
Source: opennet.ru