นักพัฒนา Rust ยังคงหลีกเลี่ยงเวอร์ชัน 1.0 แม้จะใช้งานจริงในระบบโปรดักชัน

BigGo Editorial Team
นักพัฒนา Rust ยังคงหลีกเลี่ยงเวอร์ชัน 1.0 แม้จะใช้งานจริงในระบบโปรดักชัน

ชุมชนโปรแกรมเมอร์ Rust ได้พัฒนารูปแบบที่ผิดปกติเมื่อพูดถึงการตั้งหมายเลขเวอร์ชัน โปรเจกต์หลายโปรเจกต์ที่พร้อมใช้งานจริงในระบบโปรดักชันอย่างชัดเจนยังคงอยู่ในเวอร์ชันก่อน 1.0 ซึ่งขัดต่อแนวทางปฏิบัติของ semantic versioning ( semver ) ที่ได้รับการยอมรับอย่างกว้างขวาง แนวโน้มนี้ได้จุดประกายการอภิปรายอย่างดุเดือดเกี่ยวกับการปฏิบัติในการตั้งหมายเลขเวอร์ชันและผลกระทบต่อการนำซอฟต์แวร์มาใช้งาน

ความขัดแย้งของหมายเลขเวอร์ชัน

ปัญหานี้เกิดขึ้นระหว่างการอภิปรายเกี่ยวกับโปรเจกต์ Rust หลายโปรเจกต์ รวมถึง uutils coreutils replacement ที่ได้รับความนิยม แม้จะมีความเสถียรพอที่จะรวมอยู่ใน Ubuntu และสภาพแวดล้อมโปรดักชันอื่นๆ โปรเจกต์ Rust หลายโปรเจกต์ยังคงติดอยู่ในเวอร์ชัน 0.x สิ่งนี้สร้างความสับสนให้กับผู้ใช้ที่อาจคิดว่าเครื่องมือเหล่านี้เป็นเพียงการทดลองหรือไม่เสถียร

ข้อกำหนดของ semantic versioning มีความชัดเจนในเรื่องนี้ ตามแนวทาง semver ซอฟต์แวร์ที่ใช้งานในโปรดักชันควรจะเป็นเวอร์ชัน 1.0.0 แล้ว หากผู้ใช้พึ่งพา API ที่เสถียร มันควรจะเป็น 1.0.0 ความลังเลที่จะยอมรับเวอร์ชัน 1.0 ดูเหมือนจะเกิดจากความวิตกกังวลของนักพัฒนามากกว่าข้อจำกัดทางเทคนิค

หมายเหตุ: Semantic versioning ( semver ) เป็นรูปแบบการตั้งเวอร์ชันที่ใช้ตัวเลขสามตัว (major.minor.patch) เพื่อสื่อสารความเข้ากันได้และการเปลี่ยนแปลงในการปล่อยซอฟต์แวร์

แนวทางการกำหนดเวอร์ชันแบบ Semantic สำหรับซอฟต์แวร์ที่ใช้ในการผลิต:

  • ซอฟต์แวร์ที่ใช้ในการผลิตควรมีเวอร์ชัน 1.0.0 หรือสูงกว่า
  • API ที่เสถียรซึ่งผู้ใช้พึ่งพาอาศัยควรได้รับสถานะเวอร์ชัน 1.0.0
  • ข้อกังวลเรื่องความเข้ากันได้แบบย้อนหลังบ่งชี้ถึงความพร้อมสำหรับเวอร์ชัน 1.0.0
  • เวอร์ชัน 0.x มีไว้สำหรับขั้นตอนการพัฒนาเบื้องต้นเท่านั้น

เกินกว่าข้อกังวลทางเทคนิค

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

รูปแบบนี้ขยายไปเกินกว่าหมายเลขเวอร์ชันธรรมดาไปถึงการเลือกใบอนุญาตด้วย โปรเจกต์ Rust หลายโปรเจกต์เลือกใบอนุญาตที่เปิดกว้างอย่าง MIT ซึ่งนักพัฒนาบางคนโต้แย้งว่าไม่ได้ปกป้องสิทธิของผู้ใช้อย่างเพียงพอ การชอบใบอนุญาตที่เป็นมิตรกับบริษัทมากกว่าทางเลือก copyleft อย่าง GPL ได้กลายเป็นจุดขัดแย้งอีกจุดหนึ่งในชุมชน

การอ้างสิทธิ์ด้านประสิทธิภาพและความเป็นจริง

ระบบนิเวศ Rust ได้พัฒนาชื่อเสียงในด้านการอ้างสิทธิ์ด้านประสิทธิภาพ โดย blazingly fast กลายเป็นคำอธิบายที่ใช้กันแทบทั่วไปสำหรับโปรเจกต์ Rust แม้ว่า Rust สามารถผลิตซอฟต์แวร์ที่มีประสิทธิภาพสูงได้จริง แต่ความเป็นจริงนั้นมีความซับซ้อนมากกว่า เนื่องจากทั้ง Rust และ C คอมไพล์ผ่าน LLVM ความแตกต่างด้านประสิทธิภาพมักจะขึ้นอยู่กับรายละเอียดการใช้งานมากกว่าข้อได้เปรียบพื้นฐานของภาษา

รู้สึกเหมือนเราอยู่ในจุดเปลี่ยนที่จะมีซอฟต์แวร์ที่ปลอดภัยในที่สุด หลังจากหลายทศวรรษที่ C และ C++ ล้มเหลวในทุกขั้นตอน

ประโยชน์ด้านความปลอดภัยของ Rust มีความเป็นรูปธรรมมากกว่าการอ้างสิทธิ์ด้านประสิทธิภาพ การรับประกันความปลอดภัยของหน่วยความจำและ borrow checker ให้ข้อได้เปรียบที่แท้จริงเหนือภาษาโปรแกรมระบบแบบดั้งเดิม อย่างไรก็ตาม สำหรับแอปพลิเคชันหลายตัวเช่น coreutils ประโยชน์ด้านความปลอดภัยอาจมีความสำคัญน้อยกว่า เนื่องจากเครื่องมือเหล่านี้โดยทั่วไปไม่ต้องการสิทธิพิเศษระดับสูง

ลักษณะทั่วไปของโปรเจค Rust :

  • มีแนวโน้มที่จะคงอยู่ในเวอร์ชัน 0.x แม้จะพร้อมใช้งานจริงแล้ว
  • ชอบใช้ใบอนุญาต MIT มากกว่า GPL
  • มักใช้คำอ้างเรื่องประสิทธิภาพแบบ "blazingly fast" บ่อยครั้ง
  • เน้นไปที่ประโยชน์ด้านความปลอดภัยของหน่วยความจำและการรักษาความปลอดภัย
  • การผสานรวมกับโครงสร้างพื้นฐานคอมไพเลอร์ LLVM

มองไปข้างหน้า

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

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

อ้างอิง: 0.1.8