- มีแผนจะรวม โค้ดและดีเพนเดนซีที่อิง Rust เข้าใน ตัวจัดการแพ็กเกจ APT ของ Debian ตั้งแต่หลังเดือนพฤษภาคม 2026
- ในระยะแรก ขอบเขตการรวมจะครอบคลุม คอมไพเลอร์ Rust, ไลบรารีมาตรฐาน, และ ระบบนิเวศ Sequoia
- ตัวพาร์เซอร์ไฟล์
.deb, .ar, .tar และ โค้ดตรวจสอบลายเซ็น HTTP เป็นพื้นที่หลักที่จะได้รับการปรับปรุงด้าน ความปลอดภัยของหน่วยความจำ และ การเสริมความเข้มแข็งของยูนิตเทสต์
- พอร์ตที่ยังไม่มี Rust toolchain จำเป็นต้อง สร้างสภาพแวดล้อม Rust ภายใน 6 เดือน หรือไม่เช่นนั้นอาจถูก ยุติการสนับสนุน (sunset)
- นี่เป็นมาตรการเพื่อผลักดันให้ทั้งโครงการ เปลี่ยนผ่านไปสู่เครื่องมือและเทคโนโลยีสมัยใหม่ โดยไม่ถูกฉุดรั้งด้วยข้อจำกัดด้านความเข้ากันได้กับฮาร์ดแวร์รุ่นเก่า
แผนนำโค้ด Rust เข้าสู่ APT
- มีแผนจะนำ โค้ด Rust และฮาร์ดดีเพนเดนซี (hard dependency) เข้าสู่ APT หลังเดือนพฤษภาคม 2026
- ช่วงเวลานำมาใช้อยู่หลังเดือนพฤษภาคม 2026 และจะยังไม่บังคับใช้ก่อนหน้านั้น
- ขอบเขตการรวมในระยะแรกจำกัดอยู่ที่ คอมไพเลอร์ Rust, ไลบรารีมาตรฐาน, และ ระบบนิเวศ Sequoia
เป้าหมายเพื่อยกระดับคุณภาพโค้ดและความปลอดภัย
- โค้ดสำหรับพาร์สไฟล์
.deb, .ar, .tar และ โค้ดตรวจสอบลายเซ็น HTTP เป็นเป้าหมายหลักของการนำ Rust มาใช้
- มีการระบุว่าพื้นที่นี้จะได้รับประโยชน์อย่างมากจาก ภาษาโปรแกรมที่ปลอดภัยด้านหน่วยความจำ และ ระบบยูนิตเทสต์ที่เข้มแข็งขึ้น
ข้อกำหนดสำหรับผู้ดูแลพอร์ต
- พอร์ตที่ยังไม่มี Rust toolchain ต้อง จัดเตรียมสภาพแวดล้อม Rust ภายใน 6 เดือน
- มิฉะนั้นพอร์ตนั้นอาจถูก ยุติการสนับสนุน (sunset)
ทิศทางของโครงการ
- เน้นย้ำว่าโครงการ Debian ควรพัฒนาต่อไปโดยอาศัย เครื่องมือและเทคโนโลยีสมัยใหม่
- มีการระบุว่าไม่ควรปล่อยให้ความก้าวหน้าล่าช้าเพียงเพื่อพยายามรองรับฮาร์ดแวร์รุ่นเก่าหรือ อุปกรณ์เรโทรคอมพิวติ้ง
ข้อมูลอื่น ๆ
- ผู้ส่งคือ Julian Andres Klode นักพัฒนาแกนหลักของ Debian และ Ubuntu
- อีเมลดังกล่าวถูกโพสต์ในเมลลิงลิสต์นักพัฒนา Debian debian-devel
- มีไฟล์แนบเป็น ลายเซ็น PGP (signature.asc)
- ไม่มีการกล่าวถึงรายละเอียดทางเทคนิคเพิ่มเติมหรือการเปลี่ยนแปลงกำหนดการ
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ดูเหมือนว่าในที่สุดก็ถึงเวลาแล้ว การยังคงเก็บ โค้ดสำหรับพาร์สข้อมูลที่ไม่น่าเชื่อถือ ไว้ใน C เป็นหนี้ทางเทคนิคที่ยิ่งนานยิ่งสะสม
Rust ไม่ได้เขียนยากกว่า C มากนัก และถ้าจะสร้าง C ขึ้นมาใหม่โดยสะท้อนความรู้ปัจจุบันด้านการออกแบบภาษาและ ความปลอดภัยของโค้ด ก็คงออกมาเป็นภาษาแบบนี้
ถ้ายอมทิ้งการรองรับ 32-bit x86 ได้ด้วยเหตุผลเชิงปฏิบัติ สถาปัตยกรรมพวกนี้ก็ควรเช่นกัน ถ้าอยากคงไว้จริง ๆ ก็ควรต้องทำ backend ของ Rust toolchain เอง
Go ก็ใกล้เคียงอยู่บ้าง แต่ไม่เคยถูกพูดถึงในระดับที่จะนำไปใช้กับระบบแกนหลักอย่าง systemd สงสัยเหมือนกันว่าตอนเพิ่ม C++, Python, Perl ในอดีตจะมีการถกเถียงแบบนี้หรือไม่
.deb,.ar,.tarและโค้ดยืนยันลายเซ็น HTTP จะได้ประโยชน์จากภาษาแบบ memory-safe” แต่ก็ยังสงสัยว่าการเอาโค้ดที่นิ่งมาราว 30 ปีมาเขียนใหม่ด้วยภาษาใหม่จะให้ประโยชน์เชิงรูปธรรมอะไรการทิ้ง โค้ดที่ผ่านศึกจริงมาแล้ว แล้วสร้างปัญหาความเข้ากันได้และบั๊กชุดใหม่ขึ้นมามันคุ้มจริงหรือ
กระแสการเขียนระบบแกนหลักใหม่ด้วย Rust มาแรงมาก แต่ก็ยังสงสัยว่าแค่เขียนเครื่องมือเก่าใหม่แล้ว ความปลอดภัยจะดีขึ้นจริงไหม
เข้าใจว่าการนำระบบใหม่มาใช้นั้นยาก แต่ก็ยังรู้สึกเหมือนกำลังคงโครงสร้างที่ซ้อนทับกันอยู่บน การตัดสินใจออกแบบตั้งแต่ยุคโทรเลข
ข้อแรก แทบไม่มีผู้ร่วมพัฒนาใหม่คนไหนอยากแตะ codebase C/C++ เก่า ๆ ถ้าย้ายไป Rust จะช่วยให้ ดึงนักพัฒนาใหม่เข้ามา ได้ง่ายขึ้น
ข้อสอง ความน่าเชื่อถือพิสูจน์ได้จากการใช้งานบ่อย แต่ ความปลอดภัยพิสูจน์ได้ก็ต่อเมื่อถูกโจมตี จึงยากจะบอกว่าโค้ดเก่าได้ผ่านทุก attack vector แล้ว ดังนั้นเหตุผลเรื่องการเสริมความปลอดภัยเชิงรุกจึงมีน้ำหนัก
ตามเมลเธรดของ Debian ตอนนี้ Rust เป็นสิ่งจำเป็นอยู่แล้วในสถาปัตยกรรมส่วนใหญ่ของ Debian release
ในเมลที่เกี่ยวข้อง มีการระบุว่าเหลือข้อยกเว้นแค่ alpha, hppa, m68k, sh4 เท่านั้น เลยสงสัยว่าอนาคตของสถาปัตยกรรมเหล่านี้จะเป็นอย่างไร
Rust มี Tier 3 target สำหรับ m68k แต่ตัวอื่นไม่มี เลยอยากรู้ว่ามีการใช้งานจริงแบบไหน
แปลกดีที่ 32-bit x86 กับ MIPS หายไปแล้ว แต่พวกนี้ยังอยู่ ส่วนตัวก็มีความรู้สึก nostalgic อยู่บ้าง แต่ไม่ค่อยรู้ว่าถูกใช้ที่ไหนจริง
ในอดีต LLVM เคยมี backend สำหรับ DEC Alpha แต่ก็นานมากแล้ว
อยากให้ชุมชน Rust แทนที่จะพยายามแทรกเข้าไปในโปรเจ็กต์เดิม ๆ ลองสร้าง เทคโนโลยีสมัยใหม่ใหม่ ๆ ขึ้นมาเพื่อพิสูจน์ตัวเองโดยตรง
โปรเจ็กต์อิสระอย่าง Redox เป็นตัวอย่างแบบนั้น เลยเสียดายว่าทำไมแนวทางนี้ไม่ถูกผลักดันมากกว่านี้
แน่นอนว่าก็มีพวกสุดโต่งที่ชอบพูดว่า “เขียนใหม่ด้วย Rust ซะ” แต่กรณีนี้ไม่ใช่แบบนั้น
ใช้ Rust standard library น่ะไม่เป็นไร แต่ไม่อยากดึง แพ็กเกจ cargo 500 ตัว เข้ามาเพื่อ build ตัวพาร์ส deb ที่เรียบง่าย
อาจสมเหตุสมผลกว่าถ้าจะรอให้ Rust-for-GCC port เสถียรก่อน
ฝั่ง kernel เองก็ตั้งใจว่าจะยังไม่ทำให้ Rust เป็นข้อบังคับจนกว่าจะรองรับ GCC ได้
ถ้ามีหลาย implementation ภาษาก็น่าจะมีความไม่นิ่งน้อยลง
แต่ถ้าตัดการรองรับสถาปัตยกรรมตอนนี้ พอภายหลังมี Rust toolchain ขึ้นมาแล้ว ขั้นตอนการกลับเข้ามารองรับอีกครั้งอาจซับซ้อน
ที่อาจเสถียรก่อนกลับเป็น rustc_codegen_gcc
ขอเตือนว่าผู้เขียนเมลถกเถียงเรื่อง Rust ของ Debian คือ ผู้ดูแลแพ็กเกจ keepassxc และเคยมีเธรดพูดถึงการใช้ถ้อยคำแข็งกร้าวต่อทั้งนักพัฒนา upstream และผู้ใช้มาก่อน
น่าสนใจดีที่ได้เห็นคนหนึ่งค่อย ๆ เปลี่ยนความเห็นของตัวเอง ลิงก์คำพูดก่อนหน้า
คิดว่า Rust ก็เป็นแค่ กระแส(hype) อย่างหนึ่ง ในโลก embedded นั้น C ก็ยังเป็นราชาอยู่
เอาจริงไม่เคยเห็นคนรอบตัวใช้หรือแม้แต่พิจารณา Rust เลย
มันช่วยคง ประสิทธิภาพและความประหยัดหน่วยความจำ พร้อมกับเพิ่มความเร็วในการพัฒนา
ข้อเสียอย่างเดียวคือขนาดไบนารี สำหรับผมอนาคตของ Rust ชัดเจนไปแล้ว
ถึงอย่างนั้นเสน่ห์ของมันไม่ได้มีแค่ memory safety แต่รวมถึง คุณภาพของภาษาและ toolchain โดยรวม
คิดว่าสภาพแวดล้อมแบบ polyglot มีแต่จะสร้างปัญหาเพิ่ม
ต้องมีทั้ง Python, Node, Go, Rust พร้อม toolchain และ package manager คนละชุด ทำให้ซับซ้อน
พอแก้ buffer overflow ด้วย Node ก็กลับได้ supply chain attack เพิ่มแทน
สู้เริ่มใหม่ไปเลยดีกว่า และถ้าอยากใช้ Rust แบบเต็มตัวก็ควรไปช่วย Redox OS มากกว่า
การเขียนทุกอย่างใหม่ด้วยภาษาเดียวไม่สมจริง และการไปผลัก Redox ก็อาจยิ่งไม่มีประสิทธิภาพ
Rust เป็นภาษาที่พิสูจน์ตัวเองมาแล้วพอสมควร และในฐานะ ภาษาคอมไพล์ที่มีโอกาสทำระบบพังเวลาปรับแก้น้อยกว่า C ก็มีคุณค่า
การทิ้งสถาปัตยกรรมเก่า ๆ ก็ไม่ใช่เรื่องเกินเลย
จะเอาภาษาไหนออกหรือเพิ่มภาษาไหนก็ควรเป็นเรื่องที่ผู้ดูแล Debian ตัดสินใจ