Se pare că anul acesta nu va fi anul Linux, deoarece, deși în ultimul trimestru al anului trecut totul arăta ca Linux și desktop-urile ar decola în 2025, lucrurile nu sunt întotdeauna așa cum par.
Și acum câteva zile Christoph Hellwig, o figură proeminentă în menținerea subsistemelor critice, cum ar fi DMA, KVM, Slab Allocator și PowerPC în nucleul Linux, și-a exprimat clar refuzul de a sprijini patch-uri care facilitează dezvoltarea a controlorilor din Rust.
Christoph Hellwig menționează că patch-urile în cauză Ei au propus să includă wrapper-uri în jurul funcțiilor subsistemului DMA pentru a permite driverelor scrise în Rust să-l folosească. Cu toate acestea, el susține că această strategiea complică întreținerea codului și trebuie păstrată claritatea interfețelor C, împiedicând extinderea abstracțiilor care ar putea împiedica integrarea cu restul nucleului.
Problemele amestecării limbilor într-un proiect
Potrivit lui Hellwig, Problema principală este că integrarea codului Rust generează dependențe care obligă dezvoltatorii de subsistem C să ia în considerare impactul modificărilor lor asupra codului de legare al lui Rust. Acest Înseamnă că orice ajustări ale structurilor sau funcții interne în C ar putea necesita modificări paralele la codul lui Rust, ceea ce creează un scenariu greu de menţinut pe termen lung.
Pentru a evita această situație, Hellwig a recomandat controlerelor din Rust să acceseze direct la API-ul DMA nativ în C, în loc să recurgă la wrapper-uri suplimentare despre care cred că ar compromite întreținerea nucleului.
La rândul lor, Dezvoltatorii care au propus patch-urile au susținut că ei se vor ocupa de întreținere din codul Rust și, în acest scop, au organizat legăturile într-un anumit subdirector (rust/kernel/dma.rs). Cu toate acestea, Hellwig a respins aceste propuneri, avertizând că nu trebuie să-și asume responsabilitatea. pentru a integra cod din alte limbi în subsistemele de bază.
În plus, el a comentat ferm că, dacă doriți să transformați nucleul într-un mozaic de mai multe limbi, ar trebui să începeți cu driverele Rust în loc să impuneți această complexitate în domenii fundamentale.
Controversa s-a intensificat când figuri precum Jason Gunthorpe, TPM, VFIO și întreținătorul Infiniband de la NVIDIA, au împărtășit exemple despre cum se modifică subsistemele de memorie, deși corecte din perspectiva codului C, a generat probleme la încercarea de a compila nucleul cu suport Rust. Aceste incidente au arătat clar că legăturile dintre C și Rust pot introduce dependențe suplimentare care fac dificilă dezvoltarea coordonată.
Merită menționat faptul că Discuția nu s-a limitat la aspecte tehnice. Hector Martin a sugerat că soluția ar putea fi adoptarea legăturii direct prin Linus Torvalds, evitând intervenția întreținerii subsistemului DMA. Cu toate acestea, această abordare ar putea perturba structura ierarhică tradițională a dezvoltării nucleului.
Hector a subliniat, de asemenea, comportamente pe care le considera toxice, menționând chiar că criticile lui Hellwig, care l-a comparat pe Rust cu o „tumoare canceroasă”, au contribuit la frustrarea lui și, în cele din urmă, la decizia sa de a demisiona din funcția de menținător al platformei ARM/Apple pe kernel-ul principal. În ciuda demisiei sale, platforma va continua să fie susținută de Sven Peter, care s-a angajat să o mențină în continuare.
La rândul său, Linus Torvalds s-a alăturat conversației, subliniind că procesul de dezvoltare a miezului, deși imperfect, funcționează și că discuțiile tehnice ar trebui să se concentreze pe patch-uri, fără a fi influențați de presiunile externe sau hărțuirea pe rețelele de socializare. Pentru Torvalds, abordarea ar trebui să fie pur tehnică, lăsând deoparte disputele personale.
Refuzul lui Christoph Hellwig de a încorpora pachetele Rust în subsistemul DMA evidențiază tensiunile dintre dezvoltatorii de kernel Linux. În timp ce unii văd Rust ca un instrument puternic pentru crearea de noi proiecte, alții se tem că integrarea mai multor limbi ar putea împiedica întreținerea și coerența bazei de cod.
Situația rămâne subiect de dezbatere și ar putea avea implicații semnificative pentru viitorul suportului Rust în nucleu. În orice caz, ceea ce este clar este că comunitatea de dezvoltare Linux continuă să se confrunte cu provocări complexe, unde deciziile tehnice trebuie măsurate cu atenție pentru a asigura sustenabilitatea proiectului pe termen lung.