Ядро Linux — це не місце для роботи, якщо ви не готові до якоїсь, скажімо так, жвавої суперечки. Тим не менш, один із ключових розробників у проекті розширення місця Rust у ядрі, здебільшого заснованому на C, вважає, що «нетехнічна нісенітниця» занадто велика, тому він йде на пенсію.
Ведсон Алмейда Фільо, керівник проекту Rust для Linux, минулого тижня написав до списку розсилки ядра Linux, щоб видалити себе з посади супроводжуючого проекту. «Через майже 4 роки мені не вистачає енергії та ентузіазму, які я колись мав, щоб реагувати на деякі нетехнічні нісенітниці, тому краще залишити це тим, у кого це все ще є», — написав Фільо. Подякувавши своїм товаришам по команді, він зазначив, що, на його думку, майбутнє ядер «за мовами, безпечними для пам’яті», такими як Rust. «Я не фантазер, але якщо Linux не засвоїть це, я боюся, що інше ядро зробить з ним те, що воно зробило з Unix», — написав Фільо.
Фільо також залишив «зразок для контексту», посилання на момент під час розмови на конференції Linux, у якому голос поза камерою, якого Фільо ідентифікував в інтерв’ю Register як супроводжуючого ядра Теда Цо, рішуче втручається: «Ось у чому річ : ти не змусиш усіх нас вивчати Rust». У контексті запиту Фільо, щоб файлова система Linux реалізувала прив’язки Rust, Цо каже, що, хоча він знає, що він повинен виправити весь код C для будь-яких змін, які він вносить, він не може або не хоче виправляти прив’язки Rust, які можуть постраждати.
«Вони просто хочуть зберегти свій код C»
Асахі Ліна, розробник проекту Asahi Linux, наприкінці минулого тижня написав на Mastodon: «Я, на жаль, повністю розумію розчарування Ведсона». Зазначивши, що «підгрупа розробників ядра C просто налаштована максимально ускладнити життя супроводжуючих Rust», Ліна детально розповіла про проблеми безпеки пам’яті, з якими вони зіткнулися при написанні абстракцій планувальника Direct Rendering Manager (DRM). Ліна намагалася внести невеликі виправлення, які зробили б код C «більш надійним, а вимоги до тривалості життя розумнішими», але була заблокована супроводжувачем. Помилки в C-коді цього планувальника DRM є єдиною причиною паніки ядра в драйвері Apple GPU Ліни, написала вона: «Тому що я написала це в Rust».
«Але у мене таке відчуття, що деякі супроводжувачі ядра Linux просто більше не піклуються про майбутню якість коду або про стабільність чи безпеку», — написала Ліна. «Вони просто хочуть зберегти свій код C і хочуть, щоб ми, люди з Rust, пішли геть. І це дуже сумно… і не допомагає покращити Linux».
Дрю ДеВолт, засновник SourceHut, писав у блозі про спроби Rust знайти місце всередині ядра. Теоретично ядро має вітати ентузіазм від мотивованих новачків. «На практиці спільнота Linux — це дикий дикий захід, і щодо радикальних змін сумно відомо важко досягти консенсусу, і це, безумовно, наймасштабніша зміна, яка будь-коли пропонувалася для проекту», — пише DeVault. «Кожна підсистема — це приватна феодальна власність, яка підкоряється примхам кожного з понад 1700 супроводжуючих Linux, майже всі з яких мають собаку в цій гонці. Це пасе котів: ефективне впровадження Rust — це одна частина роботи з програмування, а дев’яносто дев’ять — політична. працювати – і це багато роботи над кодуванням.”
Замість того, щоб випробовувати їхнє терпіння політикою ядра, DeVault пропонує розробникам Rust створити з нуля ядро, сумісне з Linux. «Звільнення від [списку розсилки ядра Linux] політичних баталій, ймовірно, було б великою перемогою для амбіцій впровадження Rust у простір ядра», — пише DeVault.
Торвальдс розуміє, чому поглинання Rust відбувається повільно
Додаткове читання
Лінус Торвальдс розповідає про мову Rust у ядрі Linux. Вам може бути цікаво, що про все це думає провідний супроводжувач Лінус Торвальдс. У 2021 році він застосував підхід «почекай і подивись», сподіваючись, що Rust спершу заявить про себе у відносно ізольованих драйверах пристроїв. Під час виступу наприкінці минулого місяця Торвальдс… по суті погодився зі скаргами розробників, які налаштовані на Rust, хоча й з набагато більшої сторони.
«Я очікував, що оновлення [Rust] будуть швидшими, але частково проблема полягає в тому, що старі розробники ядра звикли до C і не знають Rust», — сказав Торвальдс. «Вони не в захваті від того, що їм доведеться вивчати нову мову, яка в деяких аспектах є дуже іншою. Тож щодо Rust виникли певні негативні настрої». Однак Торвальдс додав, що «іншою причиною є те, що сама інфраструктура Rust не була надзвичайно стабільною».
Ядро Linux — це проект із високими ставками, в якому залучені сотні чи тисячі розробників; конфлікт, можливо, неминучий. Час покаже, як довго C залишатиметься основним способом кодування та мислення про таку велику, але постійно змінну кодову базу.