Линус Π’ΠΎΡ€Π²Π°Π»ΡŒΠ΄Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΡΡ ΠΊ ΠΎΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΡŽ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Rust Π² ядрС Linux

Линус Π’ΠΎΡ€Π²Π°Π»ΡŒΠ΄Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΡΡ ΠΊ ΠΎΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΡŽ возмоТности добавлСния Π² ядро Linux срСдств для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° языкС Rust. Π”ΠΆΠΎΡˆ Π’Ρ€ΠΈΠΏΠ»Π΅Ρ‚ (Josh Triplett) ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Intel, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π½Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ ΠΏΠΎ довСдСнию языка Rust Π΄ΠΎ ΠΏΠ°Ρ€ΠΈΡ‚Π΅Ρ‚Π° с языком Π‘ΠΈ Π² области систСмного программирования, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ» Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ этапС Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Kconfig ΠΎΠΏΡ†ΠΈΡŽ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Rust, которая Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ»Π° Π±Ρ‹ ΠΊ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡŽ Π² число зависимостСй компилятора Rust ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ сборки Π² Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… «make allnoconfig» ΠΈ «make allyesconfig» ΠΈ позволяла Π±Ρ‹ Π±ΠΎΠ»Π΅Π΅ свободно ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΊΠΎΠ΄ΠΎΠΌ Rust. Аналогичный Ρ‚Ρ€ΡŽΠΊ Π±Ρ‹Π» Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π² ядро ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ сборки Π² Clang Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ Π½Π° этапС связывания (LTO, Link Time Optimization), послС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ планируСтся Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ сборки с Π·Π°Ρ‰ΠΈΡ‚ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊΠ° выполнСния ΠΊΠΎΠΌΠ°Π½Π΄ (CFI, Control-Flow Integrity).

Линус Π½Π΅ согласился ΠΈ Π²Ρ‹Ρ€Π°Π·ΠΈΠ» опасСниС, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠ³Π΄Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Rust окаТСтся Π½Π΅ протСстированной Π½Π° сборку ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ риск Π·Π°Π²ΡΠ·Π½ΡƒΡ‚ΡŒ Π² своём Π±ΠΎΠ»ΠΎΡ‚Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ нСбольшая Π³Ρ€ΡƒΠΏΠΏΠ° заинтСрСсованных Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² провСряСт Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΊΠΎΠ΄Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² своих спСцифичных условиях ΠΈ добавляСт Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ спрятанными ΠΈ Π½Π΅ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‚ ΠΏΡ€ΠΈ тСстировании ядра Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… окруТСниях.

По мнСнию Линуса ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ Rust Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Π² простом Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ сбои Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ ΠΈ просты для обнаруТСния. Для упрощСния тСстирования ΠΎΠ½ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» ΠΏΠΎΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ вСрсий Π‘ΠΈ-компилятора ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Ρ„Π»Π°Π³ΠΎΠ² — ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π² систСмС компилятора Rust ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π² случаС, Ссли ΠΎΠ½ установлСн.

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