Мнението на Григ Кроа-Хартман и Кейса Кука относно промоцията на Rust в ядрото на Linux

Грег Кроа-Хартман (Greg Kroah-Hartman), отговорен за поддръжка на стабилната версия на ядрото на Linux, изрази подкрепа за разработката на нови компоненти на ядрото на езика Rust. Като човек, през когото преминава цялата информация за грешки и уязвимости в ядрото на Linux последните 15 години, той твърди, че повечето грешки в ядрото са причинени от непредвидими особености на езика C (corner case), които са напълно изключени в кода на езика Rust.

С използването на Rust ще можем да оставим в миналото такива проблеми като достъп до паметта след нейното освобождаване, излизане извън границите на буфера (частично), некоректно освобождаване на ресурси при обработка на грешки и забравени проверки на върнатите кодове на грешки, което ще позволи на мейнтейнерите да се съсредоточат върху реални грешки, като състояния на гонка и проблеми с логиката, а не да разсейват вниманието си по маловажни детайли при рецензията.

Старият код на езика C, който вече съществува, няма да изчезне, но за новия код и новите драйвери, внедряването на Rust ще позволи значително да се повиши качеството. Внедряването на Rust също ще даде възможност за структуриране на вътрешните програмни интерфейси на ядрото по такъв начин, че практически да се изключат грешките при използването на вътрешния API — в ядрото се е натрупала твърде голяма усложнена и объркана API, което представлява голямо натоварване за мейнтейнерите в работата им по проверка на правилната употреба на тези API. В процеса на развитие на Rust-обвивките, мейнтейнерите получават възможността да преразгледат и подредят API, което ще бъде от полза за всички, включително за тези, които използват езика C.

Грег не счита Rust за "сребърен куршум", който ще реши всички проблеми в ядрото, но този език определено ще помогне в огромен брой ситуации. Подкрепата на Rust също така ще задоволи нуждите на разработчиците на драйвери, които се надяват да получат инструмент, позволяващ им да пишат код за своето оборудване, като изключи много типове грешки. Що се отнася до смесването на няколко езика, Грег не вижда в това голям проблем, тъй като счита, че в миналото разработчиците на ядрото са се справяли и с по-сериозни задачи и няма причина да се отказват от напредването в ядрото на нови добри идеи, които ще помогнат за успеха на проекта през следващите 20+ години.

Към дискусията се присъедини и Кейс Кук (Kees Cook), бивш главен системен администратор на kernel.org и лидер на Ubuntu Security Team. Кейс уточни, че става въпрос не за пренаписване на съществуващия код в ядрото, а за възможността да се използва Rust за създаване на нови драйвери и подсистеми. Използването на Rust за новия код не само ще намали броя на грешките при работа с паметта, но и ще ускори времето за разработка. Скоростта на разработката се увеличава поради намаляването на усилията за отстраняване на грешки и строгите гаранции в езика, които позволяват идентифицирането на грешки на ранния етап на писането на кода, още преди започване на тестването на продукта.

Ефективността на тактиката за използване на Rust за повишаване на качеството на новия код вече бе демонстрирана от Google в платформата Android. Показа се, че основен източник на проблеми със сигурността е новият код, и на неговото качество следва да се обърне основно внимание. Стари кодове показват експоненциална зависимост на сигурността от времето (например, 5-годишен код в средното време има 3.4 пъти по-ниска плътност на уязвимостите в сравнение с новия код).

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster