Pengembangan terbaru dari brush (Bo(u)rn(e) RUsty SHell), sebuah shell yang kompatibel dengan POSIX dan bash yang diimplementasikan dalam bahasa pemrograman Rust, telah memicu percakapan yang lebih luas di dalam komunitas pengembang tentang arah masa depan command-line shell. Sementara brush sendiri mewakili entri lain dalam bidang alat sistem berbasis Rust yang terus berkembang, diskusi yang dipicunya mengungkapkan pertanyaan yang lebih dalam tentang keseimbangan antara kompatibilitas lama dengan inovasi modern.
Perdebatan Kompatibilitas POSIX
Salah satu diskusi paling menonjol yang muncul dari pengumuman brush berpusat pada apakah shell baru harus mempertahankan kompatibilitas POSIX atau membebaskan diri dari standar yang sudah berusia puluhan tahun ini. Banyak pengembang mempertanyakan apakah kepatuhan terhadap POSIX masih bernilai dalam lingkungan komputasi saat ini.
Sudah saatnya kita bergerak melampaui kepatuhan Posix untuk shell. Jangan salah paham, itu adalah hal yang luar biasa pada tahun 1980-an dan 1990-an sehubungan dengan perang Unix. Tapi dalam ironi, Linux memenangkan perang Unix, dan saat ini kepatuhan Posix, dalam hal shell, sebagian besar menghambat inovasi atau modernisasi dengan mengaitkan konsep terminal dengan sesuatu dari tahun 1988.
Sentimen ini bergema dengan beberapa komentator yang menunjuk pada keputusan Fish shell untuk mengesampingkan kompatibilitas POSIX demi desain yang lebih ergonomis. Fish, yang baru-baru ini mengalami transisi ke Rust, telah dipuji karena memprioritaskan pengalaman pengguna daripada kepatuhan ketat pada standar lama. Percakapan ini menyoroti perpecahan yang semakin besar antara mereka yang menghargai kompatibilitas mundur dan mereka yang percaya teknologi shell membutuhkan evolusi yang lebih radikal.
Dua Jalan ke Depan: Superset vs. Clean Break
Diskusi komunitas mengungkapkan dua pendekatan utama untuk evolusi shell. Pendekatan pertama melibatkan pembuatan superset dari standar POSIX, seperti yang terlihat pada Bash, Zsh, dan proyek Oils (dengan komponen OSH dan YSH-nya). Shell-shell ini mempertahankan kompatibilitas mundur sambil menambahkan fitur modern. Pendekatan kedua, yang dicontohkan oleh Fish dan PowerShell, melibatkan pemisahan bersih dari POSIX untuk memungkinkan redesain yang lebih mendasar.
Banyak pengembang mencatat bahwa pendekatan-pendekatan ini tidak saling eksklusif. Alur kerja umum yang disebutkan oleh beberapa komentator melibatkan penggunaan shell yang lebih modern, tidak kompatibel dengan POSIX seperti Fish untuk penggunaan interaktif sambil mempertahankan shell yang kompatibel dengan POSIX untuk tujuan scripting. Pendekatan hibrida ini memungkinkan pengembang untuk menikmati ergonomi yang lebih baik selama penggunaan sehari-hari tanpa mengorbankan kompatibilitas untuk skrip yang mungkin perlu dijalankan di berbagai sistem.
Data Terstruktur: Frontier Shell Berikutnya
Tema berulang dalam diskusi adalah nilai penanganan data terstruktur dalam shell modern. Beberapa komentator menyoroti Nushell dan PowerShell sebagai contoh shell yang bergerak melampaui input/output berbasis teks untuk menyediakan kemampuan manipulasi data yang lebih kaya.
Pendukung data terstruktur dalam shell menekankan bahwa memiliki data terstruktur dan bertipe menawarkan keuntungan signifikan untuk tugas manipulasi data yang kompleks. Kemampuan untuk bekerja langsung dengan JSON, CSV, dan format lainnya tanpa parsing teks yang konstan digambarkan sebagai superkekuatan gila oleh seorang penggemar. Yang lain menunjuk pada komponen YSH dari proyek Oils sebagai pendekatan lain untuk memasukkan penanganan data terstruktur sambil mempertahankan jalur migrasi dari bash tradisional.
Perbandingan Pendekatan Shell
Shell | Implementasi | Kompatibel POSIX | Data Terstruktur | Catatan |
---|---|---|---|---|
brush | Rust | Ya | Tidak | Proyek baru, bertujuan untuk kompatibilitas dengan bash |
OSH/YSH (Oils) | Python → C++ | Ya | Ya (di YSH) | Fokus pada jalur migrasi dari bash |
Fish | Rust (baru-baru ini) | Tidak | Terbatas | Memprioritaskan pengalaman pengguna |
Nushell | Rust | Tidak | Ya | Dibangun di sekitar data terstruktur |
PowerShell | .NET | Tidak | Ya | Pendekatan berbasis rekaman |
Pertimbangan Performa dan Ukuran
Beberapa kekhawatiran teknis diangkat tentang implikasi dari implementasi alat sistem dalam Rust. Seorang komentator mencatat perbedaan ukuran yang signifikan antara binary bash tradisional (1,1MB) dan implementasi brush (6,9MB). Tanpa shared libraries, ini mewakili peningkatan yang cukup besar dalam kebutuhan sumber daya yang bisa menjadi masalah untuk sistem embedded atau lingkungan dengan sumber daya terbatas lainnya.
Pengamatan ini terhubung dengan diskusi yang lebih luas tentang trade-off yang terlibat dalam menulis ulang alat sistem dalam bahasa yang memory-safe seperti Rust. Sementara implementasi seperti itu menawarkan keamanan yang lebih baik dan sering menghilangkan seluruh kelas bug, mereka mungkin datang dengan biaya performa atau sumber daya yang perlu dipertimbangkan dengan hati-hati.
Kemunculan brush dan proyek serupa mencerminkan evolusi berkelanjutan dari antarmuka command-line dalam komputasi modern. Sementara shell mungkin tampak seperti masalah yang sudah terpecahkan bagi pengguna biasa, diskusi ini mengungkapkan ekosistem inovasi yang dinamis dan filosofi yang bersaing tentang bagaimana kita harus berinteraksi dengan komputer kita di command line. Baik melalui evolusi bertahap dari shell yang kompatibel dengan POSIX atau desain baru yang revolusioner, command line yang sederhana terus beradaptasi dengan kebutuhan pengembang dan administrator sistem yang berubah.
Referensi: brush