Tampaknya tahun ini tidak akan menjadi tahun Linux, karena meskipun pada kuartal terakhir tahun lalu semuanya tampak seperti Linux dan desktop akan berkembang pada tahun 2025, keadaan tidak selalu seperti yang terlihat.
Dan beberapa hari yang lalu, Christoph Hellwig, seorang tokoh terkemuka dalam pemeliharaan subsistem penting seperti DMA, KVM, Slab Allocator, dan PowerPC di kernel Linux , dengan jelas menyatakan penolakannya terhadap dukungan patch yang memfasilitasi pengembangan driver di Rust.
Christoph Hellwig menyebutkan bahwa patch yang dimaksud mengusulkan untuk menyertakan wrapper di sekitar fungsi subsistem DMA agar driver yang ditulis dalam Rust dapat menggunakannya. Namun, ia berpendapat bahwa strategi ini mempersulit pemeliharaan kode dan kejelasan antarmuka C harus dipertahankan , menghindari perluasan abstraksi yang dapat menghambat integrasi dengan bagian kernel lainnya.
Masalah pencampuran bahasa dalam suatu proyek
Menurut Hellwig, masalah utamanya terletak pada kenyataan bahwa integrasi kode Rust menciptakan ketergantungan yang memaksa pengembang subsistem C untuk mempertimbangkan dampak modifikasi mereka pada kode penghubung Rust. Ini berarti bahwa setiap penyesuaian pada struktur atau fungsi internal C dapat memerlukan perubahan paralel pada kode Rust, menciptakan skenario yang sulit untuk dipertahankan dalam jangka panjang.
Untuk menghindari situasi ini, Hellwig merekomendasikan agar driver di Rust mengakses API DMA asli di C secara langsung, alih-alih menggunakan pembungkus tambahan yang, menurutnya, akan mengganggu pemeliharaan kernel.
Para pengembang yang mengusulkan patch tersebut berpendapat bahwa mereka akan mempertahankan kode Rust dan, untuk tujuan itu, telah mengatur tautan-tautan tersebut dalam subdirektori khusus (rust/kernel/dma.rs). Namun, Hellwig memveto proposal ini, memperingatkan bahwa ia tidak perlu memikul tanggung jawab untuk mengintegrasikan kode dari bahasa lain ke dalam subsistem inti.
Selain itu, ia berkomentar dengan tegas bahwa jika Anda ingin mengubah kernel menjadi mosaik berbagai bahasa, Anda harus memulai dengan driver Rust alih-alih memaksakan kompleksitas ini di area fundamental.
Kontroversi semakin intensif ketika tokoh-tokoh seperti Jason Gunthorpe, pengelola TPM, VFIO, dan Infiniband di NVIDIA, membagikan contoh bagaimana perubahan pada subsistem memori, meskipun benar dari perspektif kode C, menyebabkan masalah ketika mencoba mengkompilasi kernel dengan dukungan Rust. Insiden-insiden ini menunjukkan bahwa hubungan antara C dan Rust dapat memperkenalkan ketergantungan tambahan yang menghambat pengembangan terkoordinasi.
Perlu disebutkan bahwa diskusi tersebut tidak terbatas pada aspek teknis. Héctor MartÃn menyarankan bahwa solusinya bisa dengan mengadopsi tautan langsung melalui Linus Torvalds, melewati pengelola subsistem DMA. Namun, pendekatan ini dapat mengganggu struktur hierarki tradisional pengembangan kernel.
Hector juga menunjuk pada perilaku yang dianggapnya beracun, bahkan menyebutkan bahwa kritik Hellwig, di mana ia membandingkan Rust dengan "tumor ganas," telah berkontribusi pada frustrasinya dan, pada akhirnya, pada keputusannya untuk mengundurkan diri sebagai pengelola platform ARM/Apple di kernel utama. Terlepas dari pengunduran dirinya, platform tersebut akan terus didukung oleh Sven Peter, yang telah berkomitmen untuk melanjutkan pemeliharaannya.
Linus Torvalds ikut bergabung dalam percakapan tersebut , menekankan bahwa proses pengembangan kernel , meskipun tidak sempurna, berjalan dengan baik dan bahwa diskusi teknis harus fokus pada patch , tanpa dipengaruhi oleh tekanan eksternal atau pelecehan di media sosial. Bagi Torvalds , fokusnya harus murni teknis, mengesampingkan perselisihan pribadi.
Penolakan Christoph Hellwig untuk menggabungkan pembungkus Rust ke dalam subsistem DMA menyoroti ketegangan di antara pengembang kernel Linux. Sementara beberapa orang melihat Rust sebagai alat yang ampuh untuk membuat proyek baru, yang lain khawatir bahwa mengintegrasikan banyak bahasa dapat menghambat pemeliharaan dan konsistensi basis kode.
Situasi ini masih menjadi bahan perdebatan dan dapat memiliki implikasi signifikan bagi masa depan dukungan Rust di kernel. Bagaimanapun, yang jelas adalah bahwa komunitas pengembangan Linux terus menghadapi tantangan kompleks, di mana keputusan teknis harus dipertimbangkan dengan cermat untuk memastikan keberlanjutan proyek dalam jangka panjang.