Christoph Hellwig, održavatelj DMA, KVM, Slab Allocator podsustava i PowerPC arhitekture u Linux kernelu, odlučno je odbio prihvatiti Rust omotnice za DMA podustav, pridružio se raspravi o pravilima za održavanje Rust-a unutar jezgre, objavljenim u projektu Rust for Linux. Prema Christophovom mišljenju, takva pravila su beskorisna dok nisu dogovorena sa zajednicom i uključena u dokumentaciju jezgre.
Christoph je također primijetio da u pravilima postoji netočna informacija koja sugerira da održavatelji mogu samostalno donositi odluke o uključivanju Rust povezanog koda u svoje podustave. Prema Christophu, u privatnom razgovoru, Linus Torvalds je izjavio da je odlučan u namjeri da prihvati Rust kod u jezgru, unatoč protivljenju održavatelja. Tako će programeri i održavatelji jezgre sada morati raditi s Rust-om, bez obzira na to žele li to ili ne.
Christoph je također ponovo usporedio širenje Rust omotnica s rakom koji će se proširiti na sve podustave jezgre i dovesti do fragmentacije. Iz jedinstvenog entiteta, jezgra se pretvara u projekt napisan na nekoliko jezika, bez jasnog definiranja kada koji jezik treba koristiti. Prema Christophu, rad s takvim mješovitim kodnim bazama postao je njegov najgori noćni košmar, jer se u takvim uvjetima neprekidno prepisuje kod s jednog jezika na drugi, a zatim natrag.
U tom kontekstu, Christoph traži objašnjenje o svrsi uvođenja Rusta u jezgru. Ako je svrha rješavanje sigurnosnih problema koji se javljaju pri niskonivoj obradi memorije, onda je prije svega potrebna modernizacija postojećeg koda. S obzirom na to da se održavatelji bolno reagiraju čak i na trivijalne stvari poput provjera preljevanja cijelog broja, nije jasno kako se može prevladati razlika između jednog dijela jezgre, koji ne prihvaća čak ni osnovna pravila za osiguranje sigurnosti, i drugog dijela koji se pridržava strogih pravila. Ako je svrha pojednostavljenje razvoja upravljačkih programa, tada bi uvođenje podrške za još jedan jezik samo dodalo novi posao i povećalo opterećenje ionako preopterećenih ljudi koji održavaju infrastrukturu jezgre u radnom stanju.
Što se tiče pristalica uvođenja Rust-a u jezgru, oni navode sljedeće ciljeve:
- Pisanje novog koda na jeziku Rust smanjit će rizik od grešaka u radu s memorijom i stanjima utrke, a također će eliminirati neke logičke greške.
- Maintainerima će biti lakše recenzirati promjene i provoditi refaktoriranje modula uzimajući u obzir garancije koje pruža jezik Rust.
- Prisutnost apstrakcija koje koriste napredne mogućnosti jezika Rust olakšat će stvaranje novih drajvera i modula.
- Podrška modernom jeziku privući će nove sudionike u razvoju jezgre.
- Primjena mogućnosti alata Rust olakšat će ispunjavanje zahtjeva za dokumentiranje koda. Na primjer, u projektu Rust for Linux uveden je zahtjev za obveznim dokumentiranjem javnih API-ja, zahtjeva za sigurnost, unsafe-blokova i invarianti tipova.
Izvor: opennet.ru
