Rust за Linux в беда, напрежение и разногласия вече излязоха наяве 

Rust за проблеми с Linux

Изглежда, че тази година няма да е годината на Linux, тъй като въпреки че през последното тримесечие на миналата година всичко изглеждаше, че Linux и настолните компютри ще тръгнат през 2025 г., нещата не винаги са такива, каквито изглеждат.

И това са само няколко дни Кристоф Хелвиг, видна фигура в поддържането на критични подсистеми като DMA, KVM, Slab Allocator и PowerPC в ядрото на Linux, изясни отказа си да поддържа пачове които улесняват развитието на контролери в Rust.

Кристоф Хелвиг споменава, че въпросните пачове Те предложиха да се включат обвивки около функциите на подсистемата DMA, за да се позволи на драйвери, написани на Rust, да я използват. Той обаче твърди, че тази стратегияa усложнява поддръжката на кода и трябва да се запази яснотата на C интерфейсите, предотвратявайки разширяването на абстракции, които биха могли да възпрепятстват интеграцията с останалата част от ядрото.

Проблемите на смесването на езици в проект

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

За да избегнете тази ситуация, Hellwig препоръчва контролерите в Rust да имат директен достъп към родния DMA API в C, вместо да прибягват до допълнителни обвивки, които според тях биха компрометирали поддръжката на ядрото.

Междувременно, Разработчиците, които предложиха пачовете, твърдяха, че те ще се погрижат за поддръжката на кода на Rust и за тази цел са организирали връзките в специфична поддиректория (rust/kernel/dma.rs). обаче Хелуиг наложи вето на тези предложения, предупреждавайки, че не е необходимо да поема отговорност. за интегриране на код от други езици в основни подсистеми.

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

Споровете се засилиха когато фигури като Джейсън Гънторп, поддържащ TPM, VFIO и Infiniband в NVIDIA, споделиха примери за това как промените в подсистемите на паметта, макар и правилни от гледна точка на C код, генерира проблеми при опит за компилиране на ядрото с поддръжка на Rust. Тези инциденти показаха ясно, че обвързването между C и Rust може да въведе допълнителни зависимости, които затрудняват координираното развитие.

Струва си да се спомене това Дискусията не се ограничи до технически аспекти. Хектор Мартин предположи, че решението може да бъде да се приеме връзката директно през Линус Торвалдс, като се избягва намесата на поддържащия DMA подсистемата. Този подход обаче може да наруши традиционната йерархична структура на разработката на ядрото.

Хектор също посочи поведения, които смята за токсични, дори споменавайки, че критиката на Hellwig, който сравни Rust с „раков тумор“, е допринесла за неговото разочарование и в крайна сметка за решението му да се оттегли като поддържащ платформата ARM/Apple на основното ядро. Въпреки неговата оставка, платформата ще продължи да се поддържа от Свен Петер, който обеща да продължи да я поддържа.

От своя страна, Линус Торвалдс се присъедини към разговора, подчертавайки, че процесът на развитие на ядрото, макар и несъвършено, работи и че техническите дискусии трябва да се съсредоточат върху кръпките, без да се влияе от външен натиск или тормоз в социалните мрежи. За Торвалдс подходът трябва да е чисто технически, оставяйки настрана личните спорове.

Отказът на Christoph Hellwig да включи Rust wrappers в подсистемата DMA подчертава напрежението между разработчиците на ядрото на Linux. Докато някои виждат Rust като мощен инструмент за създаване на нови проекти, други се опасяват, че интегрирането на множество езици може да попречи на поддръжката и последователността на кодовата база.

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