Rust สำหรับ Linux มีปัญหา ความตึงเครียด และความขัดแย้งปรากฏให้เห็นแล้ว 

Rust สำหรับปัญหา Linux

ดูเหมือนว่าปีนี้จะไม่ใช่ปีของ Linux แม้ว่าไตรมาสสุดท้ายของปีที่แล้วทุกอย่างดูเหมือนว่า Linux และเดสก์ท็อปจะได้รับความนิยมในปี 2025 แต่สิ่งต่างๆ กลับไม่ได้เป็นอย่างที่เห็นเสมอไป

และเมื่อไม่กี่วันก่อนChristoph Hellwig บุคคลสำคัญในการบำรุงรักษาระบบย่อยที่สำคัญ เช่น DMA, KVM, Slab Allocator และ PowerPC ในเคอร์เนล Linux ได้แสดงจุดยืนอย่างชัดเจนในการปฏิเสธที่จะสนับสนุนแพตช์ที่อำนวยความสะดวกในการพัฒนาไดรเวอร์ในภาษา Rust

Christoph Hellwig กล่าวว่าแพตช์ที่กล่าวถึงนั้นเสนอให้รวมถึงการสร้าง wrapper รอบฟังก์ชันของระบบย่อย DMA เพื่อให้ไดรเวอร์ที่เขียนด้วย Rust สามารถใช้งานได้ อย่างไรก็ตาม เขาแย้งว่ากลยุทธ์นี้ทำให้การบำรุงรักษาโค้ดซับซ้อนขึ้น และควรคงความชัดเจนของอินเทอร์เฟซ C ไว้โดยหลีกเลี่ยงการขยายความนามธรรมที่อาจขัดขวางการบูรณาการกับส่วนที่เหลือของเคอร์เนล

ปัญหาการผสมภาษาในโครงการ

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

เพื่อหลีกเลี่ยงสถานการณ์นี้ เฮลวิกแนะนำว่าไดรเวอร์ใน Rust ควรเข้าถึง API DMA ดั้งเดิมในภาษา C โดยตรง แทนที่จะใช้ตัวห่อเพิ่มเติม ซึ่งในความคิดของเขาจะทำให้ความสามารถในการบำรุงรักษาเคอร์เนลลดลง

นักพัฒนาที่เสนอแพตช์เหล่านั้นอ้างว่าพวกเขาจะดูแลรักษาโค้ด Rust และด้วยเหตุนี้จึงได้จัดระเบียบลิงก์ไว้ในไดเร็กทอรีย่อยเฉพาะ (rust/kernel/dma.rs) อย่างไรก็ตามเฮลวิกได้คัดค้านข้อเสนอเหล่านั้น โดยเตือนว่าเขาไม่จำเป็นต้องรับผิดชอบในการรวมโค้ดจากภาษาอื่นเข้ากับระบบย่อยหลัก

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

ความขัดแย้งทวีความรุนแรงขึ้นเมื่อบุคคลอย่าง Jason Gunthorpe ผู้ดูแลระบบ TPM, VFIO และ Infiniband ที่ NVIDIA ได้ยกตัวอย่างว่า การเปลี่ยนแปลงระบบย่อยของหน่วยความจำนั้น แม้จะถูกต้องตามหลักการของโค้ด C แต่กลับก่อให้เกิดปัญหาเมื่อพยายามคอมไพล์เคอร์เนลโดยใช้ Rustเหตุการณ์เหล่านี้แสดงให้เห็นว่า การเชื่อมโยงระหว่าง C และ Rust อาจก่อให้เกิดการพึ่งพาเพิ่มเติมที่ขัดขวางการพัฒนาอย่างประสานงานกัน

เป็นที่น่ากล่าวถึงว่าการสนทนาไม่ได้จำกัดอยู่เฉพาะด้านเทคนิคเท่านั้นเฮคเตอร์ มาร์ติน เสนอว่าทางออกอาจเป็นการเชื่อมต่อโดยตรงผ่านลินัส ทอร์วัลด์ส โดยไม่ต้องผ่านผู้ดูแลระบบย่อย DMA อย่างไรก็ตาม วิธีการนี้อาจทำลายโครงสร้างลำดับชั้นแบบดั้งเดิมของการพัฒนาเคอร์เนลได้

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

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

การปฏิเสธของ Christoph Hellwig ที่จะรวม Rust wrapper เข้าในระบบย่อย DMA เน้นย้ำถึงความตึงเครียดระหว่างนักพัฒนาเคอร์เนล Linux ในขณะที่บางคนมองว่า Rust เป็นเครื่องมืออันทรงพลังสำหรับการสร้างโปรเจ็กต์ใหม่ คนอื่นๆ กลัวว่าการรวมภาษาหลายๆ ภาษาเข้าด้วยกันอาจขัดขวางความสามารถในการบำรุงรักษาและความสอดคล้องของฐานโค้ด

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


เพิ่มเป็นแหล่งข้อมูลที่ต้องการใน Google