Keputusan terkini Ubuntu untuk menggunakan penulisan semula GNU Core Utils berasaskan Rust telah mencetuskan perdebatan hangat dalam komuniti teknologi mengenai sama ada pembangun mengutamakan bahasa yang sedang popular berbanding menyelesaikan masalah sebenar. Kontroversi ini berpusat pada penggantian utiliti Unix yang telah teruji selama berpuluh tahun dengan alternatif moden yang ditulis dalam Rust .
GNU Core Utils merangkumi alat baris arahan penting seperti ls
, cp
, mv
, dan cat
yang membentuk tulang belakang sistem seperti Unix . Utiliti ini telah berjalan dengan boleh dipercayai sejak tahun 1990-an, menyebabkan pengkritik mempersoalkan mengapa ia perlu diganti sama sekali.
Keselamatan Memori vs Kestabilan Terbukti
Hujah utama untuk penulisan semula Rust memfokuskan pada faedah keselamatan memori. Rust menghapuskan seluruh kelas kelemahan keselamatan yang melanda program C , termasuk isu limpahan penimbal dan kerosakan memori. Perbincangan komuniti mendedahkan bahawa walaupun GNU Core Utils telah mengalami masalah keselamatan, dengan pangkalan data CVE menunjukkan beberapa kelemahan selama bertahun-tahun, termasuk satu dengan skor keterukan 9.8 pada tahun 2015.
Walau bagaimanapun, golongan skeptik berhujah bahawa utiliti C yang matang ini telah diuji dan dioptimumkan secara meluas selama tiga dekad. Mereka bimbang bahawa sebarang penulisan semula pasti akan memperkenalkan pepijat baharu sambil berpotensi mengorbankan peningkatan prestasi yang terkumpul melalui bertahun-tahun pemurnian.
Sejarah Keselamatan GNU Core Utils
- CVE dengan skor keterukan CVSS 9.8 pada tahun 2015 (penafian perkhidmatan dalam utiliti sort)
- Sebanyak 5 CVE direkodkan, semuanya disebabkan oleh overflow atau rasuahan memori
- Kebanyakan kelemahan berkaitan dengan isu keselamatan memori yang direka bentuk Rust untuk dicegah
Dakwaan Prestasi Di Bawah Penelitian
Satu perkara yang menjadi perdebatan melibatkan perbandingan prestasi antara utiliti C asal dan rakan sejawat Rust mereka. Walaupun pengkritik mendakwa versi Rust paling baik boleh menyamai prestasi C , penanda aras terkini menceritakan kisah yang berbeza. Projek uutils telah menunjukkan kes di mana pelaksanaan Rust sebenarnya mengatasi rakan sejawat GNU mereka, mencabar andaian mengenai kelebihan kelajuan semula jadi C .
Perdebatan prestasi melangkaui kelajuan mentah untuk mempertimbangkan kebolehselenggaraan dan pengalaman pembangun. Perkakas Rust moden menawarkan pengurusan pakej yang lebih baik, pengendalian ralat, dan sokongan konkurensi berbanding aliran kerja pembangunan C tradisional.
Contoh Perbandingan Prestasi
- uutils cut mengatasi kedua-dua versi BSD dan GNU dalam penanda aras terkini
- Pelaksanaan Rust boleh memanfaatkan pengoptimuman SIMD dengan lebih mudah berbanding C
- GNU Core Utils kebanyakannya berbenang tunggal, manakala Rust membolehkan berbilang benang yang selamat
- Dakwaan prestasi "Rust hanya boleh menyamai C pada tahap terbaik" dicabar oleh keputusan dunia sebenar
Dimensi Pelesenan
Aspek yang sering diabaikan dalam penulisan semula ini melibatkan perubahan pelesenan. GNU Core Utils menggunakan lesen GPL , yang memerlukan karya terbitan kekal sebagai sumber terbuka. Banyak alternatif Rust menggunakan lesen permisif seperti MIT atau Apache , membenarkan penggunaan komersial tanpa berkongsi pengubahsuaian kembali kepada komuniti.
Semua utiliti GNU dilesenkan GPL . Pada masa ketika pelesenan semula dan tarikan permaidani lain menjadi tajuk utama, saya mendapati ia mengganggu bahawa begitu ramai pembangun menggunakan lesen 'permisif' untuk penciptaan semula perkara dalam Rust .
Peralihan ini membimbangkan sesetengah pembangun yang bimbang tentang syarikat yang mendapat manfaat daripada kerja komuniti tanpa menyumbang penambahbaikan kembali kepada ekosistem.
Implikasi Pelesenan
- GNU Core Utils: Lesen GPL (copyleft, memerlukan perkongsian pengubahsuaian)
- Alternatif Rust: Selalunya lesen MIT/Apache (permisif, membenarkan penggunaan proprietari)
- Kesan korporat: Syarikat boleh menggunakan versi permisif tanpa menyumbang balik
- Contoh: Kod FreeBSD digunakan dalam PlayStation , Nintendo Switch tanpa manfaat kepada komuniti
Perubahan Generasi dalam Pembangunan
Perdebatan ini juga mencerminkan ketegangan yang lebih luas antara komuniti pembangun yang mantap dan yang sedang berkembang. Pengaturcara muda sering lebih suka bahasa moden dengan perkakas dan ciri keselamatan yang lebih baik, manakala pembangun berpengalaman menghargai kestabilan dan rekod prestasi yang terbukti bagi penyelesaian sedia ada.
Ada yang berhujah bahawa menarik penyumbang baharu memerlukan pemodenan pangkalan kod. Apabila penyelenggara veteran bersara, projek yang ditulis dalam bahasa lama mungkin bergelut untuk mencari pengganti yang bersedia. Rust yang semakin popular di kalangan pembangun baharu boleh membantu memastikan penyelenggaraan jangka panjang alat infrastruktur kritikal.
Melangkaui Merit Teknikal
Kontroversi ini melangkaui coreutils untuk mewakili corak yang lebih besar dalam pembangunan perisian. Perdebatan serupa telah muncul sekitar penulisan semula alat asas lain dalam Rust , daripada pelayan web kepada komponen sistem pengendalian. Pengkritik melihat ini sebagai evangelisme bahasa yang didorong lebih oleh keghairahan untuk teknologi baharu daripada keperluan sebenar untuk penambahbaikan.
Penyokong membalas bahawa penambahbaikan berperingkat dalam keselamatan, prestasi, dan kebolehselenggaraan membenarkan usaha tersebut, terutamanya untuk komponen sistem kritikal yang akan digunakan selama berpuluh tahun akan datang.
Keputusan Ubuntu akhirnya mencerminkan pertukaran kompleks antara inovasi dan kestabilan yang mentakrifkan pembangunan perisian moden. Walaupun faedah praktikal segera mungkin kelihatan terhad, implikasi jangka panjang untuk keselamatan sistem, kebolehselenggaraan, dan penglibatan pembangun boleh terbukti signifikan apabila landskap teknologi terus berkembang.
Rujukan: Are We Chasing Language Hype Over Solving Real Problems?