เชลล์ที่พัฒนาด้วย Rust อย่าง 'brush' จุดประเด็นถกเถียงระหว่างความเข้ากันได้กับ POSIX และนวัตกรรมเชลล์สมัยใหม่

BigGo Editorial Team
เชลล์ที่พัฒนาด้วย Rust อย่าง 'brush' จุดประเด็นถกเถียงระหว่างความเข้ากันได้กับ POSIX และนวัตกรรมเชลล์สมัยใหม่

การพัฒนาล่าสุดของ brush (Bo(u)rn(e) RUsty SHell) ซึ่งเป็นเชลล์ที่เข้ากันได้กับ POSIX และ bash ที่พัฒนาด้วยภาษา Rust ได้จุดประกายการสนทนาในวงกว้างภายในชุมชนนักพัฒนาเกี่ยวกับทิศทางในอนาคตของเชลล์แบบคอมมานด์ไลน์ ในขณะที่ brush เองเป็นเพียงหนึ่งในเครื่องมือระบบที่พัฒนาด้วย Rust ที่มีจำนวนเพิ่มมากขึ้น การสนทนาที่เกิดขึ้นได้เปิดเผยคำถามที่ลึกซึ้งกว่าเกี่ยวกับการสร้างสมดุลระหว่างความเข้ากันได้กับระบบเก่าและนวัตกรรมสมัยใหม่

การถกเถียงเรื่องความเข้ากันได้กับ POSIX

หนึ่งในประเด็นสำคัญที่เกิดขึ้นจากการประกาศเปิดตัว brush คือการพิจารณาว่าเชลล์ใหม่ควรรักษาความเข้ากันได้กับ POSIX หรือควรแยกตัวออกจากมาตรฐานที่มีอายุหลายทศวรรษนี้ นักพัฒนาหลายคนตั้งคำถามว่าการยึดมั่นกับ POSIX ยังคงมีคุณค่าในสภาพแวดล้อมการคำนวณในปัจจุบันหรือไม่

ถึงเวลาแล้วที่เราควรก้าวข้ามการปฏิบัติตามมาตรฐาน Posix สำหรับเชลล์ อย่าเข้าใจผิด มันเป็นสิ่งที่ยอดเยี่ยมในช่วงทศวรรษ 1980 และ 1990 ในช่วงสงคราม Unix แต่ด้วยความเป็นจริงที่น่าขบขัน Linux ได้ชนะสงคราม Unix และทุกวันนี้การปฏิบัติตามมาตรฐาน Posix ในส่วนที่เกี่ยวกับเชลล์ ส่วนใหญ่กลับเป็นการขัดขวางนวัตกรรมหรือการทำให้ทันสมัย โดยการตรึงแนวคิดของเทอร์มินัลไว้กับสิ่งที่มีมาตั้งแต่ปี 1988

ความคิดเห็นนี้ได้รับการตอบรับจากผู้แสดงความคิดเห็นหลายคนที่ชี้ให้เห็นถึงการตัดสินใจของ Fish shell ที่จะละทิ้งความเข้ากันได้กับ POSIX เพื่อการออกแบบที่เน้นการใช้งานที่สะดวกมากขึ้น Fish ซึ่งเพิ่งผ่านการเปลี่ยนผ่านไปสู่ Rust ได้รับคำชมเชยสำหรับการให้ความสำคัญกับประสบการณ์ผู้ใช้มากกว่าการยึดมั่นอย่างเคร่งครัดกับมาตรฐานเก่า การสนทนานี้ชี้ให้เห็นถึงความแตกแยกที่เพิ่มขึ้นระหว่างผู้ที่ให้คุณค่ากับความเข้ากันได้ย้อนหลังและผู้ที่เชื่อว่าเทคโนโลยีเชลล์ต้องการการวิวัฒนาการที่รุนแรงมากขึ้น

สองเส้นทางสู่อนาคต: Supersets กับ Clean Breaks

การสนทนาในชุมชนเผยให้เห็นแนวทางหลักสองประการในการพัฒนาเชลล์ แนวทางแรกเกี่ยวข้องกับการสร้าง supersets ของมาตรฐาน POSIX ดังที่เห็นใน Bash, Zsh และโครงการ Oils (พร้อมองค์ประกอบ OSH และ YSH) เชลล์เหล่านี้รักษาความเข้ากันได้ย้อนหลังในขณะที่เพิ่มคุณสมบัติสมัยใหม่ แนวทางที่สอง ซึ่งมีตัวอย่างจาก Fish และ PowerShell เกี่ยวข้องกับการตัดขาดจาก POSIX เพื่อเปิดทางให้มีการออกแบบใหม่ที่มีพื้นฐานมากขึ้น

นักพัฒนาหลายคนสังเกตว่าแนวทางเหล่านี้ไม่จำเป็นต้องแยกออกจากกัน เวิร์กโฟลว์ทั่วไปที่กล่าวถึงโดยผู้แสดงความคิดเห็นหลายคนเกี่ยวข้องกับการใช้เชลล์ที่ทันสมัยกว่าและไม่เข้ากันกับ POSIX อย่าง Fish สำหรับการใช้งานแบบโต้ตอบ ในขณะที่ยังคงใช้เชลล์ที่เข้ากันได้กับ POSIX สำหรับการเขียนสคริปต์ แนวทางแบบผสมผสานนี้ช่วยให้นักพัฒนาสามารถเพลิดเพลินกับการยศาสตร์ที่ดีขึ้นในการใช้งานประจำวันโดยไม่ต้องเสียสละความเข้ากันได้สำหรับสคริปต์ที่อาจต้องทำงานบนระบบต่าง ๆ

ข้อมูลแบบโครงสร้าง: พรมแดนใหม่ของเชลล์

ประเด็นที่เกิดขึ้นซ้ำในการสนทนาคือคุณค่าของการจัดการข้อมูลแบบโครงสร้างในเชลล์สมัยใหม่ ผู้แสดงความคิดเห็นหลายคนชี้ให้เห็นถึง Nushell และ PowerShell เป็นตัวอย่างของเชลล์ที่ก้าวข้ามการป้อนข้อมูล/ส่งออกแบบข้อความเพื่อให้ความสามารถในการจัดการข้อมูลที่สมบูรณ์ยิ่งขึ้น

ผู้สนับสนุนข้อมูลแบบโครงสร้างในเชลล์เน้นย้ำว่าการมีข้อมูลแบบมีโครงสร้างและมีประเภทให้ข้อได้เปรียบที่สำคัญสำหรับงานจัดการข้อมูลที่ซับซ้อน ความสามารถในการทำงานโดยตรงกับ JSON, CSV และรูปแบบอื่น ๆ โดยไม่ต้องแยกวิเคราะห์ข้อความอยู่ตลอดเวลาถูกอธิบายว่าเป็น พลังพิเศษที่น่าทึ่ง โดยผู้หนึ่งที่ชื่นชอบ คนอื่น ๆ ชี้ไปที่องค์ประกอบ YSH ของโครงการ Oils ว่าเป็นอีกแนวทางหนึ่งในการรวมการจัดการข้อมูลแบบโครงสร้างในขณะที่รักษาเส้นทางการย้ายจาก bash แบบดั้งเดิม

การเปรียบเทียบเชลล์ต่างๆ

เชลล์ การพัฒนา รองรับ POSIX ข้อมูลแบบโครงสร้าง หมายเหตุ
brush Rust ใช่ ไม่ โครงการใหม่ มุ่งเน้นความเข้ากันได้กับ bash
OSH/YSH (Oils) Python → C++ ใช่ ใช่ (ใน YSH) มุ่งเน้นเส้นทางการย้ายจาก bash
Fish Rust (เมื่อไม่นานมานี้) ไม่ จำกัด ให้ความสำคัญกับประสบการณ์ผู้ใช้
Nushell Rust ไม่ ใช่ สร้างขึ้นรอบข้อมูลแบบโครงสร้าง
PowerShell .NET ไม่ ใช่ แนวทางแบบบันทึกข้อมูล

ข้อพิจารณาด้านประสิทธิภาพและขนาด

มีการยกประเด็นทางเทคนิคบางประการเกี่ยวกับผลกระทบของการใช้ Rust ในการพัฒนาเครื่องมือระบบ ผู้แสดงความคิดเห็นคนหนึ่งสังเกตเห็นความแตกต่างของขนาดที่สำคัญระหว่างไบนารี bash แบบดั้งเดิม (1.1MB) และการใช้งาน brush (6.9MB) หากไม่มีไลบรารีที่ใช้ร่วมกัน นี่เป็นการเพิ่มขึ้นของความต้องการทรัพยากรที่สำคัญซึ่งอาจเป็นปัญหาสำหรับระบบฝังตัวหรือสภาพแวดล้อมที่มีทรัพยากรจำกัดอื่น ๆ

ข้อสังเกตนี้เชื่อมโยงกับการสนทนาที่กว้างขึ้นเกี่ยวกับการแลกเปลี่ยนที่เกี่ยวข้องกับการเขียนเครื่องมือระบบใหม่ในภาษาที่มีความปลอดภัยด้านหน่วยความจำเช่น Rust ในขณะที่การใช้งานดังกล่าวให้ความปลอดภัยที่ดีขึ้นและมักจะกำจัดข้อบกพร่องทั้งหมด แต่อาจมาพร้อมกับต้นทุนด้านประสิทธิภาพหรือทรัพยากรที่ต้องพิจารณาอย่างรอบคอบ

การเกิดขึ้นของ brush และโครงการที่คล้ายคลึงกันสะท้อนถึงวิวัฒนาการอย่างต่อเนื่องของอินเทอร์เฟซแบบคอมมานด์ไลน์ในการคำนวณสมัยใหม่ ในขณะที่เชลล์อาจดูเหมือนเป็นปัญหาที่แก้ไขแล้วสำหรับผู้ใช้ทั่วไป การสนทนาเหล่านี้เปิดเผยให้เห็นระบบนิเวศที่มีชีวิตชีวาของนวัตกรรมและปรัชญาที่แข่งขันกันเกี่ยวกับวิธีที่เราควรโต้ตอบกับคอมพิวเตอร์ของเราที่คอมมานด์ไลน์ ไม่ว่าจะผ่านการวิวัฒนาการแบบค่อยเป็นค่อยไปของเชลล์ที่เข้ากันได้กับ POSIX หรือการออกแบบใหม่ที่ปฏิวัติวงการ คอมมานด์ไลน์ที่เรียบง่ายยังคงปรับตัวให้เข้ากับความต้องการที่เปลี่ยนแปลงของนักพัฒนาและผู้ดูแลระบบ

อ้างอิง: brush