На конференції Open Source Summit 2022 в ці дні в розділі поширених запитань, Лінус Торвальдс згадав про можливість ранньої інтеграції в ядрі Linux компонентів для розробки Драйвери пристроїв в Rust.
Тому було згадано, що виправлення з підтримкою Rust можуть бути прийняті в наступному журналі змін, який становить композицію ядра 5.20, запланований на кінець вересня.
Слід пам’ятати, що з минулого року Rust став одним із фаворитів для включення до різних важливих проектів і що за час, що минув, вже була проведена робота щодо впровадження підтримки Rust.
Серед відомих проектів, які з минулого року цікавилися Rust, можна виділити, наприклад, Android, оскільки він цікавився Іржа тому що це дозволяє досягти продуктивності, близької до мов C і C++, що дозволяє використовувати його для розробки низькорівневих частин платформи та компонентів для взаємодії з апаратним забезпеченням.
Щоб забезпечити безпеку коду на C і C ++, Android використовує ізоляцію пісочниці, статичний аналіз та нечіткі тести. Можливості ізоляції пісочниці обмежені і досягли межі своїх можливостей (подальша фрагментація процесів не є практичною з точки зору споживання ресурсів).
Серед обмежень використання пісочниці вони згадують великі накладні витрати та більш високе споживання пам'яті, спричинені необхідністю генерувати нові процеси, а також додаткову затримку, пов'язану з використанням IPC.
З іншого боку, ми не повинні цього забувати Лінус Торвальдс також висловив свою думку щодо Rust і в якому витратили на перевірку виконання патч можливостей встановити драйвери мови Rust в ядрі Linux і висловив певну критику.
Найбільші скарги були викликані потенціал для втечі "Паніка під час виконання відмови" в неправильних ситуаціях, наприклад, у ситуації, коли немає пам’яті, коли операції динамічного розподілу пам’яті, включаючи операції ядра, можуть провалитися.
Торвальдс заявив, що така орієнтація на ядро є принципово неприйнятною, І якщо ви не розумієте цього, ви можете повністю відхилити будь-який код, який намагається використовувати такий підхід. З іншого боку, розробник виправлення погодився із проблемою та вважав її розв’язуваною.
Але минуло кілька місяців відтоді, як Лінус залишив свій відгук, і була зроблена важка робота, щоб покращити впровадження. Як такий, запит на витяг для ядра на даний момент ще не надіслано Торвальдсу, але набір виправлень було додатково переглянуто, ключові нотатки видалено, перевірено на гілці linux-next протягом досить тривалого часу та доведено до стану, придатного для побудови шарів абстракції поверх підсистем ядра, написання драйверів і модулів.
Підтримка Rust є опцією який не ввімкнено за замовчуванням і не призводить до того, що Rust буде включено серед необхідних залежностей збірки для ядра.
Запропоновані зміни дозволяють використовувати Rust як другу мову для розробки драйверів і модулів ядра. Використання Rust для розробки драйверів дозволить вам створювати кращі та безпечніші драйвери з мінімальними зусиллями, без проблем, як-от доступ до області пам’яті після її звільнення, розіменування нульових покажчиків і переповнення буфера.
Безпека пам'яті забезпечується в Rust під час компіляції шляхом перевірки посилань, відстеження володіння об’єктом і тривалості життя (області) об’єкта, а також шляхом оцінки правильності доступу до пам’яті під час виконання коду. Rust також забезпечує захист від переповнення цілого числа, вимагає ініціалізації змінних перед використанням, краще справляється з помилками в стандартній бібліотеці, застосовує концепцію незмінних змінних і посилань за замовчуванням і пропонує сильну статичну типізацію для мінімізації логічних помилок.