Pembangunan terkini brush (Bo(u)rn(e) RUsty SHell), sebuah shell yang serasi dengan POSIX dan bash yang diimplementasikan dalam bahasa pengaturcaraan Rust, telah mencetuskan perbincangan yang lebih luas dalam komuniti pembangun tentang hala tuju masa depan shell baris arahan. Walaupun brush sendiri mewakili satu lagi kemasukan dalam bidang alat sistem berasaskan Rust yang semakin berkembang, perbincangan yang dicetuskannya mendedahkan persoalan yang lebih mendalam tentang keseimbangan antara keserasian legasi dengan inovasi moden.
Perbahasan Keserasian POSIX
Salah satu perbincangan paling menonjol yang muncul daripada pengumuman brush berkisar tentang sama ada shell baharu harus mengekalkan keserasian POSIX atau membebaskan diri daripada standard yang telah berusia berdekad ini. Ramai pembangun mempersoalkan sama ada kepatuhan kepada POSIX masih bernilai dalam persekitaran pengkomputeran hari ini.
Sudah tiba masanya kita beralih daripada pematuhan Posix untuk shell. Jangan salah faham, ia adalah sesuatu yang hebat pada tahun 1980-an dan 1990-an berkaitan dengan perang Unix. Tetapi dalam satu ironi, Linux telah memenangi perang Unix, dan pada masa kini pematuhan Posix, berkaitan dengan shell, kebanyakannya menghalang inovasi atau pemodenan dengan mengikat konsep terminal kepada sesuatu dari tahun 1988.
Sentimen ini mendapat sambutan daripada beberapa pengulas yang menunjukkan keputusan Fish shell untuk mengetepikan keserasian POSIX demi reka bentuk yang lebih ergonomik. Fish, yang baru-baru ini menjalani peralihan sendiri kepada Rust, telah dipuji kerana mengutamakan pengalaman pengguna berbanding kepatuhan ketat kepada standard legasi. Perbualan ini menyoroti jurang yang semakin meluas antara mereka yang menghargai keserasian ke belakang dan mereka yang percaya teknologi shell memerlukan evolusi yang lebih radikal.
Dua Laluan ke Hadapan: Superset vs. Pemisahan Bersih
Perbincangan komuniti mendedahkan dua pendekatan utama untuk evolusi shell. Pendekatan pertama melibatkan penciptaan superset standard POSIX, seperti yang dilihat dengan Bash, Zsh, dan projek Oils (dengan komponen OSH dan YSH). Shell-shell ini mengekalkan keserasian ke belakang sambil menambah ciri-ciri moden. Pendekatan kedua, dicontohkan oleh Fish dan PowerShell, melibatkan pemisahan bersih daripada POSIX untuk membolehkan reka bentuk semula yang lebih asas.
Ramai pembangun menyatakan bahawa pendekatan-pendekatan ini tidak saling eksklusif. Aliran kerja biasa yang disebut oleh beberapa pengulas melibatkan penggunaan shell yang lebih moden, tidak serasi POSIX seperti Fish untuk penggunaan interaktif sambil mengekalkan shell serasi POSIX untuk tujuan penskrip. Pendekatan hibrid ini membolehkan pembangun menikmati ergonomik yang lebih baik semasa penggunaan harian tanpa mengorbankan keserasian untuk skrip yang mungkin perlu dijalankan pada pelbagai sistem.
Data Berstruktur: Sempadan Shell Seterusnya
Tema berulang dalam perbincangan adalah nilai pengendalian data berstruktur dalam shell moden. Beberapa pengulas menyoroti Nushell dan PowerShell sebagai contoh shell yang bergerak melampaui input/output berasaskan teks untuk menyediakan keupayaan manipulasi data yang lebih kaya.
Penyokong data berstruktur dalam shell menekankan bahawa memiliki data bertaip dan berstruktur menawarkan kelebihan yang signifikan untuk tugas manipulasi data yang kompleks. Keupayaan untuk bekerja secara langsung dengan JSON, CSV, dan format lain tanpa penguraian teks yang berterusan digambarkan sebagai kuasa luar biasa oleh seorang peminat. Yang lain menunjukkan kepada komponen YSH projek Oils sebagai pendekatan lain untuk menggabungkan pengendalian data berstruktur sambil mengekalkan laluan penghijrahan dari bash tradisional.
Perbandingan Pendekatan Shell
Shell | Pelaksanaan | Serasi POSIX | Data Berstruktur | Catatan |
---|---|---|---|---|
brush | Rust | Ya | Tidak | Projek baru, bertujuan untuk keserasian dengan bash |
OSH/YSH (Oils) | Python → C++ | Ya | Ya (dalam YSH) | Memberi tumpuan pada laluan migrasi dari bash |
Fish | Rust (baru-baru ini) | Tidak | Terhad | Mengutamakan pengalaman pengguna |
Nushell | Rust | Tidak | Ya | Dibina berdasarkan data berstruktur |
PowerShell | .NET | Tidak | Ya | Pendekatan berasaskan rekod |
Pertimbangan Prestasi dan Saiz
Beberapa kebimbangan teknikal telah dibangkitkan mengenai implikasi pelaksanaan alat sistem dalam Rust. Seorang pengulas menyatakan perbezaan saiz yang ketara antara binari bash tradisional (1.1MB) dan pelaksanaan brush (6.9MB). Tanpa perpustakaan yang dikongsi, ini mewakili peningkatan yang ketara dalam keperluan sumber yang boleh menjadi masalah untuk sistem terbenam atau persekitaran lain yang terhad sumber.
Pemerhatian ini berkait dengan perbincangan yang lebih luas tentang pertukaran yang terlibat dalam menulis semula alat sistem dalam bahasa yang selamat dari segi memori seperti Rust. Walaupun pelaksanaan sedemikian menawarkan keselamatan yang lebih baik dan sering menghapuskan seluruh kelas pepijat, ia mungkin datang dengan kos prestasi atau sumber yang perlu ditimbang dengan teliti.
Kemunculan brush dan projek serupa mencerminkan evolusi berterusan antara muka baris arahan dalam pengkomputeran moden. Walaupun shell mungkin kelihatan seperti masalah yang telah diselesaikan kepada pengguna biasa, perbincangan ini mendedahkan ekosistem inovasi yang rancak dan falsafah bersaing tentang bagaimana kita harus berinteraksi dengan komputer kita pada baris arahan. Sama ada melalui evolusi beransur-ansur shell serasi POSIX atau reka bentuk baharu yang revolusioner, baris arahan yang sederhana terus menyesuaikan diri dengan keperluan pembangun dan pentadbir sistem yang berubah.
Rujukan: brush