Kriza u promoviranju Rust jezika u jezgru zbog strahova od otežanog održavanja.

Christoph Hellwig, održavatelj podsustava DMA, KVM, Slab Allocator i arhitekture PowerPC u Linux jezgru, koji je nekoć bio član upravnog tehničkog odbora Linux Foundation i bio tužitelj u parnici koja se tiče GPL-a protiv VMware-a, odbio je potvrditi zakrpe vezane uz podršku razvoju drajvera na jeziku Rust. Predložene zakrpe dodavale su obloge nad nekoliko funkcija pod sustavom DMA, omogućujući korištenje DMA u drajverima na jeziku Rust.

Kao razlog odbijanja navedeno je kompliciranje održavanja koda prisutno oblogama na drugim jezicima i želja da se sačuvaju programski interfejsi za DMA u čitljivom obliku na jeziku C, bez zamagljivanja nejasnim oblogama. Christoph je predložio da se izravno obraća izvornoj C API za DMA u svakom drajveru na jeziku Rust, kako ne bi stvorio dodatne apstrakcije od kojih će ovisiti oni koji održavaju jezgro.

Razvijateli zakrpa su naveli da će preuzeti sav rad na održavanju koda na Rustu, spremni su održavati ove zakrpe samostalno i izdvojili su obloge u zaseban poddirektorij (rust/kernel/dma.rs). U odgovoru, Christoph je stavio veto („Nacked-by“) na prihvaćanje povezanih zakrpa s Rust-om i istaknuo da mu nije potreban još jedan održavatelj. Christoph je rekao da, ako razvijači obloga žele postići nemogućnost održavanja Linux-a zbog miješanja nekoliko jezika u jednoj bazi koda, to trebaju raditi u svom drajveru, a ne širiti tu rak-izrast na osnovne pod sustave jezgra.

Pri tom je Christoph pojasnio da nema ništa protiv jezika Rust i smatra ga jednim od najboljih novih jezika, ali se protivi miješanju koda na različitim jezicima. Prema Christophovim riječima, za stvaranje novih projekata na Rust-u, ali se protivi miješanju Rusta s velikim kodnim bazama na C-u, jer to miješanje značajno smanjuje pogodnost održavanja jezgra kao integriranog projekta.

Sustav problema s održavanjem leži u tome što Rust obavijanja stavljaju prateće osobe u ovisnost o kodu napisanom na jeziku Rust. Na prvi pogled, čini se da su obavijanja samo nadogradnje na C strukturama i funkcijama, koje nikako ne utječu na razvoj i održavanje koda na C-u. No, to nije tako. U prisutnosti takvih obavijanja, programeri pod sustava napisani na C-u moraju uzeti u obzir utjecaj njihovih promjena na nastavak funkcionalnosti obavijanja. Svaka promjena u strukturama podataka ili unutarnjim funkcijama na C-u može dovesti do potrebe za promjenom koda obavijanja, stoga promjene na C kodu koje utječu na obavijanja treba pratiti i sinkronizirati s kodom na Rustu. Mnogi prateći nisu spremni preuzeti dodatnu odgovornost za ispravljanje problema koji proizlaze iz koda na Rustu i ne namjeravaju trošiti svoje vrijeme na praćenje stanja Rust obavijanja.

Situacija s kompliciranjem održavanja nije samo teorijska. U raspravu se uključio Jason Gunthorpe, održavatelj TPM, VFIO i Infiniband iz tvrtke NVIDIA, koji je naveo primjer odbijanja pull zahtjeva od strane Linusa Torvaldsa s promjenama u pod sustavu upravljanja memorijom, jer je ta promjena uzrokovala kvar prilikom pokušaja sastavljanja jezgre s omogućenom podrškom za Rust. Kvar se dogodio zbog toga što prateći kod na Rustu nisu dodali potrebne izmjene u generator obavijanja (bindgen). Tako su prateći pod sustav upravljanja memorijom prilikom unapređenja promjene, koja je bila potpuno ispravna s stajališta C koda i jezgre u cijelosti, postali ovisni o opcionalnom vanjskom kodu u jezgrici, za koji su odgovorni drugi ljudi.

Odbijanje prihvaćanja obavijanja iznad DMA poziva stavilo je programere projekta Rust for Linux u slijepu ulicu, jer bez takvih obavijanja razvoj punopravnih drajvera na jeziku Rust će biti otežan. Hector Martin, održavatelj koda za podršku ARM čipovima Apple i vođa projekta Ashai Linux, kao opciju za rješavanje sukoba predložio je postići prihvaćanje obavijanja izravno kroz Linusa Torvaldsa, mimo pratećeg pod sustavom DMA. Ako Linus pristane na takvo kršenje hijerarhije i ustaljene prakse, to bi moglo dovesti do krize upravljanja razvojem jezgre, a ako odbije — zaustavit će napredak Rusta u jezgru.

Kao opcija, Hektor je spomenuo pozivanje Kristofa na odgovornost zbog kršenja kodeksa ponašanja zbog komentara u kojem je Kristof usporedio Rust s rakom. Osim toga, Hektor je napisao da je umoran od svih birokratskih prepreka, nije spreman jednostavno povjerovati ustaljenim procesima i nagovijestio je uključivanje društvenih mreža. Dejv Eirli, održavaoc DRN pod-sustava, savjetovao je da ne preuveličavaju sukob i da shvate da je toksično ponašanje neprihvatljivo s obje strane, bez obzira na to tko je u pravu ili nije.

Diskusiji se pridružio Linus Torvalds, koji je ukazao da je problem možda u samom Hektoru i njegovom samopouzdanju da zna nešto bolje od drugih, a ne u trenutnom procesu razvoja jezgra koji radi. Proces razvoja jezgra ima problema, ali to je životna stvarnost — u životu ništa nije savršeno. Pokušaji progona putem društvenih mreža su ono što odbija Linusa od bilo kakvog povezanog s Hektorovim pristupom. Linusu su važni tehnički razgovori i zakrpe, a ne pritisak preko društvenih mreža.

U odgovoru, Hektor je poslao zahtjev za uklanjanje sebe iz broja pratitelja ARM/APPLE platforme, jer je izgubio vjeru u primjenjivan proces razvoja jezgra i pristup upravljanju zajednicom. Također je izjavio da će se razvoj ARM/Apple platforme nastaviti izvan glavnog jezgra Linuxa. U jezgru ARM/Apple platforme ostao je još jedan održavaoc - Sven Peter, koji namjerava nastaviti podržavati platformu u jezgru.

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster