Fish Shell 4.0 Dilancarkan: Teras Ditulis Semula dalam Rust Tanpa Memberi Kesan kepada Pengguna

BigGo Editorial Team
Fish Shell 4.0 Dilancarkan: Teras Ditulis Semula dalam Rust Tanpa Memberi Kesan kepada Pengguna

Shell popular Fish telah mencapai versi 4.0.0, menandakan pencapaian penting dengan kod terasnya yang telah ditulis semula sepenuhnya dalam Rust. Dilancarkan pada 27 Februari 2025, kemaskini utama ini mewakili hampir dua tahun kerja pembangunan merangkumi lebih 2,600 commit oleh lebih daripada 200 penyumbang.

Penulisan Semula dalam Rust

Perubahan paling ketara dalam Fish 4.0 adalah penulisan semula kod terasnya dari C++ kepada Rust. Usaha besar ini melibatkan perubahan pada 1,155 fail dengan lebih 110,000 penambahan baris dan hampir 89,000 penghapusan. Walaupun skala perubahan ini besar, pasukan Fish telah menekankan bahawa tidak seharusnya ada kesan langsung kepada pengguna - satu pencapaian luar biasa memandangkan sifat menyeluruh penulisan semula ini.

Saya mendapati ini sangat mengagumkan, bahawa mereka menulis semula keseluruhan teras Fish, tetapi semuanya terus berfungsi dengan cara yang sama (kecuali beberapa perkara kecil yang berubah dengan cara yang minimal, yang mereka senaraikan).

Kod yang ditulis semula telah berkembang dari kira-kira 55,000 baris C++ kepada 75,000 baris Rust. Menurut perbincangan komuniti, sebahagian besar peningkatan ini boleh dikaitkan dengan keutamaan format Rust, yang cenderung menyebarkan kod merentasi beberapa baris, serta penambahan ciri-ciri baru. Beberapa pengguna telah menyatakan bahawa versi Rust membina sedikit lebih perlahan dan menghasilkan binari yang lebih besar - kira-kira 4.3 MB berbanding dengan 2.4 MB untuk versi C++ sebelumnya.

Perbandingan Fish 4.0 dengan 3.x

Ciri Fish 4.0 Fish 3.x
Bahasa teras Rust C++
Saiz kod ~75,000 baris ~55,000 baris
Saiz binari 4.3 MB 2.4 MB
Masa pembinaan (versi siap) ~37 saat ~23 saat
Kebergantungan Rust 1.70+, Pengkompil C Pengkompil C++, Pengkompil C
Kebergantungan ncurses Tidak (memerlukan terminfo) Ya

Perubahan Penting dalam Fish 4.0

  • Sistem notasi kekunci baharu
  • Pembolehubah dalam kedudukan arahan yang mengembang kepada kata kunci subperintah kini dilarang
  • Ciri qmark-noglob diaktifkan secara lalai (? tidak lagi bertindak sebagai glob aksara tunggal)
  • Pengekodan papan kekunci modifyOtherKeys XTerm dan protokol papan kekunci kitty kini diminta
  • Konfigurasi web ditulis semula menggunakan Alpine.js

Mengapa Pengguna Menyukai Fish

Fish telah mendapat populariti terutamanya kerana ciri-ciri intuitifnya yang berfungsi dengan baik tanpa perlu konfigurasi tambahan. Perbincangan komuniti menekankan bahawa sistem pelengkapan automatik shell yang sangat baik adalah ciri yang paling dihargai, tanpa memerlukan konfigurasi manual. Aspek lain yang dipuji termasuk sistem tema/prompt yang lancar dan pengurusan plugin melalui oh-my-fish.

Ramai pengguna menyebut bahawa mereka terus menggunakan Fish untuk penggunaan shell interaktif sambil masih menulis skrip dalam Bash atau shell POSIX untuk kebolehgunaan. Pendekatan hibrid ini membolehkan mereka mendapat manfaat daripada ciri-ciri mesra pengguna Fish sambil mengekalkan keserasian dengan sistem di mana Fish tidak dipasang.

Pertimbangan Keserasian

Satu perkara yang sering dibangkitkan dalam perbincangan adalah geseran yang kadangkala berlaku apabila menyalin arahan Bash ke dalam Fish disebabkan perbezaan sintaks. Sesetengah pengguna telah membangunkan penyelesaian kreatif, seperti skrip yang secara automatik menghalakan arahan Bash melalui instans Bash yang berterusan apabila ditampal ke dalam Fish.

Penulisan semula ini juga telah mengakibatkan beberapa perubahan yang tidak serasi ke belakang, termasuk sistem notasi kekunci baru, perubahan pada pengendalian pembolehubah dalam kedudukan arahan, dan mengaktifkan ciri qmark-noglob secara lalai (bermaksud ? tidak lagi bertindak sebagai glob aksara tunggal). Selain itu, Fish kini meminta pengekodan papan kekunci modifyOtherKeys XTerm dan peningkatan progresif protokol papan kekunci kitty.

Untuk Pengedar dan Pembangun

Peralihan kepada Rust bermakna perubahan ketara dalam kebergantungan. Fish kini memerlukan Rust 1.70 atau lebih tinggi, sambil tidak lagi memerlukan pengkompil C++ (walaupun pengkompil C masih diperlukan untuk beberapa kod pelekat dan ujian). CMake kekal sebagai sistem pembinaan yang disyorkan dengan versi 3.5 sebagai versi minimum yang disokong.

Perubahan ketara lain adalah Fish tidak lagi bergantung kepada pustaka ncurses, walaupun ia masih menggunakan pangkalan data terminfo. Pembungkus disarankan untuk menambah kebergantungan pada pakej yang mengandungi pangkalan data terminfo mereka dan bukannya curses.

Konfigurasi berasaskan Web juga telah ditulis semula untuk menggunakan Alpine.js, mewakili usaha pemodenan lain di samping penulisan semula teras.

Semasa Fish 4.0 dilancarkan di pelbagai pengurus pakej dan platform, ia berdiri sebagai contoh menakjubkan bagaimana penulisan semula utama boleh dicapai sambil mengekalkan pengalaman pengguna yang menjadikan perisian itu popular pada asalnya. Bagi pengguna yang mempertimbangkan untuk mencuba Fish atau menaik taraf dari versi sebelumnya, peralihan itu seharusnya luar biasa lancar walaupun terdapat perubahan besar di bawah hood.

Rujukan: fish 4.0.0 (dilancarkan 27 Februari 2025)