Падтрымка Rust для ядра Linux сутыкнулася з крытыкай Торвальдса

Лінус Торвальдс правёў рэцэнзаванне патчаў з рэалізацыяй магчымасці стварэння драйвераў на мове Rust для ядра Linux, і выказаў некаторыя крытычныя зацемкі.

Найбольшыя прэтэнзіі выклікала патэнцыйная магчымасць сыходу ў panic() у памылковых сітуацыях, напрыклад, у сітуацыі недахопу памяці, калі аперацыі дынамічнага размеркавання памяці, у тым ліку і ўсярэдзіне ядраў, могуць завяршыцца памылкай. Торвальдс заявіў, што падобны падыход у ядры прынцыпова недапушчальны і пры неразуменні гэтага моманту ён можа цалкам адкруціць (totally NAKed) любы код, які паспрабуе выкарыстаць падобны падыход. З іншага боку, распрацоўшчык, які займаецца патчамі, пагадзіўся з дадзенай праблемай і лічыць яе развязальнай.

Яшчэ адной праблемай сталі спробы выкарыстання вылічэнняў з якая плавае коскі або 128-бітнымі тыпамі, што не з'яўляецца дапушчальным для такіх акружэнняў, як ядро ​​Linux. Гэта аказалася больш сур'ёзнай праблемай, бо ў дадзены момант базавая (core) бібліятэка Rust непадзельная і ўяўляе сабой адзін вялікі blob – у ёй няма магчымасці запытаць толькі некаторыя з магчымасцяў, прадухіліўшы выкарыстанне той ці іншай праблемнай функцыянальнасці. Рашэнне праблемы можа запатрабаваць занясенні змен у кампілятары rust і бібліятэкі, пры тым, што на дадзены момант у каманды яшчэ няма стратэгіі, як рэалізаваць модульнасць бібліятэк мовы.

Акрамя таго Торвальдс адзначыў, што прадстаўлены прыклад драйвера - бескарысны і параіў прыкласці ў якасці прыкладу які-небудзь драйвер, які вырашае адну з рэальных задач.

Дадатак: Кампанія Google заявіла аб сваім удзеле ў ініцыятыве па пасоўванні падтрымкі Rust у ядро ​​Linux і прывяла тэхнічныя аспекты мэтазгоднасці ўкаранення Rust для барацьбы з праблемамі, якія ўзнікаюць з-за памылак пры працы з памяццю. Google мяркуе, што Rust ужо гатовы далучыцца да Сі ў якасці мовы для распрацоўкі кампанентаў ядра Linux. У артыкуле таксама прыведзены прыклады выкарыстання мовы Rust для распрацоўкі драйвераў ядра, у кантэксце іх выкарыстання ў платформе Android (Rust прызнаны афіцыйна падтрымліваемай мовай для распрацоўкі Android).

Адзначаецца, што Google падрыхтаваў пачатковы прататып напісанага на мове Rust драйвера для механізму міжпрацэснага ўзаемадзеяння Binder, які дазволіць правесці дэталёвае параўнанне прадукцыйнасці і бяспекі рэалізацый Binder на Сі і Rust. У бягучым выглядзе праца яшчэ не завершана, але ўжо амаль для ўсіх базавых абстракцый функцыянальнасці ядра, неабходных для працы Binder, падрыхтаваны праслойкі для выкарыстання гэтых абстракцый у кодзе на мове Rust.

Крыніца: opennet.ru

Дадаць каментар