Fish Shell 3.7.0: ยังคงใช้ C++ ในขณะที่นำการปรับปรุงใหม่ๆ
Fish Shell 3.7.0 ปรับปรุงตัวจัดการประวัติ ประสิทธิภาพ และการเขียนสคริปต์ การปล่อยเวอร์ชัน 4.x ในอนาคตจะย้ายระบบภายในของ Fish ไปใช้ Rust
ในระบบนิเวศของลินุกซ์ หนึ่งในคุณสมบัติที่โดดเด่นในเรื่องความยืดหยุ่นและความสามารถคือความหลากหลายของเชลล์ที่ผู้ใช้สามารถเลือกใช้ได้
พร้อมกับ Bash คลาสสิกและอื่น ๆ อย่าง Zsh และ Tcsh, Fish ได้รับการยอมรับและนำมาใช้กันอย่างแพร่หลายในฐานะตัวเลือกหลักสำหรับผู้ใช้ Linux หลายคนเนื่องจากความเป็นมิตรต่อผู้ใช้และฟีเจอร์ขั้นสูงมานานแล้ว
การเปิดตัว Fish 3.7.0 ที่เพิ่งประกาศไป ซึ่งมีการคอมมิตมากกว่า 1,289 ครั้ง ทำให้ตำแหน่งนี้แข็งแกร่งขึ้น โดยสัญญาว่าจะมีการปรับปรุงและแก้ไขต่างๆ มาดูกันเลยว่ามีอะไรบ้าง
Fish Shell 3.7.0
ไฮไลต์หลัก
Fish 3.7.0 ปรับปรุงการจัดการประวัติคำสั่งในบรรทัดคำสั่ง ตอนนี้ผู้ใช้สามารถค้นหาคำสั่งที่ซับซ้อนด้วยการจับคู่ลำดับย่อยได้อย่างง่ายดาย นอกจากนี้ history pager ยังแนะนำฟีเจอร์การค้นหาที่ชาญฉลาดขึ้นและวิธีที่เข้าใจง่ายขึ้นในการจัดการกับคำค้นหาที่ไม่ตรงกัน
เกี่ยวกับประสิทธิภาพ การทำคำสั่งให้สมบูรณ์อัตโนมัติและการใช้ globbing พบการปรับปรุงความเร็วอย่างมาก โดยเฉพาะบนระบบไฟล์ที่ช้ากว่าเช่น NFS ซึ่งเป็นประโยชน์อย่างมากสำหรับผู้ใช้ที่ต้องทำงานหนักบนบรรทัดคำสั่ง
อีกหนึ่งคุณสมบัติเด่นในอัปเดตนี้คือความสามารถในการตั้งเวลา timeout สำหรับลำดับคีย์หลายปุ่ม ซึ่งช่วยเพิ่มความสะดวกในการใช้งานฟีเจอร์ต่าง ๆ เช่น การสลับโหมดใน vi mode พร้อมกันนี้ LS_COLORS จะไม่ถูกตั้งค่าโดยอัตโนมัติอีกต่อไป กระตุ้นให้ผู้ใช้ปรับแต่งการตั้งค่าให้เหมาะกับตัวเองมากขึ้น
การปรับปรุงสคริปต์และบรรทัดคำสั่ง
- ความเสถียรและความยืดหยุ่น: Fish 3.7.0 แก้ไขข้อบกพร่องหลายประการและปรับปรุงประสบการณ์การเขียนสคริปต์ ตั้งแต่การแก้ไขปัญหาที่ทำให้โปรแกรมหยุดทำงานไปจนถึงการปรับปรุงคำสั่งในตัว ‘jobs‘ อัปเดตนี้ทำให้การเขียนสคริปต์มีความน่าเชื่อถือและหลากหลายมากขึ้น
- ประสบการณ์แบบโต้ตอบ: การอัปเดตนี้นำการเปลี่ยนแปลงที่โดดเด่นมาสู่ประสบการณ์แบบโต้ตอบ เช่น การค้นหาประวัติในโหมด vi ที่ดีขึ้น การรายงานไดเรกทอรีทำงานที่ดีกว่าใน iTerm2 และการปรับแต่งสีการเลือกที่ได้รับการปรับปรุง
- การทำคำสั่งให้สมบูรณ์และการปรับปรุงพรอมต์: Fish 3.7.0 ยังได้แนะนำฟังก์ชัน bind ใหม่สำหรับการจัดการประวัติ ปรับปรุงข้อความแสดงข้อผิดพลาด และเพิ่มการสนับสนุนคำสั่งภายนอก
การปรับแต่งด้านความสวยงามและความสะดวกในการใช้งาน
ธีมเริ่มต้นตอนนี้ใช้สีที่มีชื่อกำหนดไว้ ให้สอดคล้องกับพาเล็ตของเทอร์มินัล และธีม Dracula ทำการซิงค์กับการเปลี่ยนแปลงจากต้นน้ำ นอกจากนี้พรอมต์ยังแสดงไดเรกทอรีการทำงานได้อย่างแม่นยำมากขึ้น
สุดท้าย Fish 3.7.0 ได้เพิ่มการเติมคำอัตโนมัติสำหรับคำสั่งต่าง ๆ มากมาย ทำให้ชีวิตของผู้ใช้สะดวกขึ้น นอกจากนี้เวอร์ชันนี้ยังมีการปรับปรุงตัวสร้างการเติมคำในหน้าคู่มือ และมีการปรับแต่งการเติมคำอื่น ๆ อีกด้วย
รัสต์: ทางข้างหน้า
เชลล์ Fish ส่วนใหญ่ถูกเขียนด้วยภาษา C++ อย่างไรก็ตาม สิ่งนี้กำลังจะเปลี่ยนแปลงในเร็ว ๆ นี้
เดวิด อดัม หนึ่งในนักพัฒนาหลักของ Fish ยืนยันว่าเกือบทั้งหมดของโค้ด C++ ได้ถูกเปลี่ยนไปเป็น Rust อย่างประสบความสำเร็จ การเปลี่ยนแปลงนี้ได้เพิ่มโค้ด Rust จำนวน 87,029 บรรทัด ในขณะที่ลบโค้ด C++ ออกทั้งหมด 76,776 บรรทัด ซึ่งถือเป็นการเขียนใหม่ 100% ตามการอัปเดตล่าสุดของพวกเขา
อย่างไรก็ตาม เขาได้ชี้แจงว่าสถานการณ์สำคัญนี้ไม่ได้หมายความว่ารุ่นใหม่ของ Fish shell พร้อมสำหรับผู้ใช้งานทั่วไป สภาพปัจจุบันของโครงการยังมีแนวโน้มที่ดี มีการปรับปรุงประสิทธิภาพบางส่วน แต่ก็ยังเผชิญกับความท้าทายในบางด้าน
ที่น่าสังเกตคือ การเขียนโค้ดใหม่ยังไม่สามารถบรรลุเป้าหมายทางเทคนิคได้ โดยเฉพาะอย่างยิ่งในเรื่องความปลอดภัยของเธรด ซึ่งเป็นแรงจูงใจหลักในการย้ายไปใช้ Rust
นอกจากนี้ การสนับสนุนแพลตฟอร์มยังคงเป็นอุปสรรคสำคัญ การสนับสนุนระยะสั้นสำหรับแพลตฟอร์มอย่าง Cygwin และ MSys2 ดูเหมือนไม่เป็นไปได้ และการสร้างแพ็กเกจสำหรับการกระจาย Linux เวอร์ชันเก่าก็เป็นความท้าทายเช่นกัน
เมื่อพิจารณาเรื่องนี้ ซีรีส์ที่สามของ Fish ที่มีอยู่จะยังคงใช้ C++ สำหรับการเขียนโค้ด แต่เมื่อเปิดตัวซีรีส์ที่สี่ คาดว่าจะมีการเปลี่ยนแปลงครั้งสำคัญโดยเปลี่ยนภาษาโปรแกรมหลักไปเป็น Rust

