ในช่วงหลายเดือนที่ผ่านมา นักพัฒนา Linux ทะเลาะกัน ความเป็นไปได้ของ อนุญาตให้ใช้ภาษาสนิม เพื่อเขียนไดรเวอร์อุปกรณ์ใหม่สำหรับเคอร์เนล
ปีที่แล้ว ผู้พัฒนาเคอร์เนลลินุกซ์ ดูเหมือนว่าพวกเขาจะบรรลุข้อตกลงในเรื่องนี้แล้ว ผู้สนับสนุน Rust ได้อ้างถึงงานที่แสดงให้เห็นว่าช่องโหว่เคอร์เนลประมาณสองในสามที่กำหนด CVE ใน Android และ Ubuntu นั้นเกี่ยวข้องกับปัญหาด้านความปลอดภัยของหน่วยความจำ
ตามคำแถลงนี้ Linus Torvalds วิศวกรซอฟต์แวร์ ผู้สร้างหลัก และผู้พัฒนาเคอร์เนล Linux กล่าวในการให้สัมภาษณ์ว่าการสนทนาในหัวข้อนี้จะมีความสำคัญมากกว่าการโพสต์ Google ที่มีความยาวในภาษามาก
เมื่อถามถึงข้อเสนอแนะในการใช้ Rust เขาระบุว่า "วิธีแก้ปัญหาที่นี่ง่ายมาก แค่ใช้ C ++ แทน Rust"
หลังจากนั้น ในเดือนมีนาคมเปิดตัวการสนับสนุนครั้งแรกe ซึ่งอนุญาตให้วางไดรเวอร์ Rust ในทรี Linux-Next สำหรับการทดสอบเพิ่มเติมก่อนที่จะรวมไว้ในเคอร์เนลหลักในที่สุด
ด้านหลังเป็น "คำขอความคิดเห็น" ที่ออกใหม่ในรายการส่งเมลเคอร์เนลเกี่ยวกับเปอร์สเปคทีฟของรหัส Rust สำหรับเคอร์เนล Linux
มิเกล โอเจด้าผู้พัฒนาเคอร์เนล Linux เริ่มข้อเสนอขอความคิดเห็น (RFC) ในรายการส่งเมลเคอร์เนลของ Linux
โพสต์รายชื่อส่งเมลระบุถึงความเชื่อของนักพัฒนาที่เกี่ยวข้องกับการเพิ่มโค้ด Rust ให้กับเคอร์เนล ประโยชน์ต่างๆ เช่น ความปลอดภัยของหน่วยความจำที่ได้รับการปรับปรุง และอื่นๆ
“พวกคุณบางคนสังเกตเห็นในช่วงไม่กี่สัปดาห์หรือหลายเดือนมานี้ว่ามีความพยายามอย่างจริงจังในการนำภาษาที่สองมาสู่เคอร์เนล ในที่สุดเราก็อยู่ที่นั่นด้วย RFC ที่เพิ่มการรองรับ Rust ให้กับเคอร์เนล Linux” Miguel Ojeja กล่าว "เรารู้ว่ามีค่าใช้จ่ายและความเสี่ยงมหาศาลในการแนะนำภาษาใหม่ให้กับเคอร์เนล" เขากล่าวเสริม
ทีมงานโครงการ Rust for Linux ย้ายจากคอมไพเลอร์ Rust เบต้าไปใช้รุ่นที่เสถียรโดยจะโยกย้ายทุกครั้งที่ออกเวอร์ชันใหม่
Miguel กล่าวว่า "เราขอขอบคุณ Rust ที่ร่วมงานกับเราในตัวเลือกเหล่านี้ เพื่อให้เคอร์เนลสามารถใช้งานได้
เมื่อทำการอัพเดทคอมไพเลอร์ทีมงาน สามารถลบคุณสมบัติที่ไม่เสถียรออกจากรายการได้: const_fn_transmute, const_panic, const_unreachable_unchecked, core_panic และ try_reserve
นอกจากนี้ ยังเน้นย้ำว่า มีการเพิ่มตัวเลือกการทำให้เป็นโมดูลบางส่วน เพิ่มเติมเพื่อจัดสรรเพื่อปิดใช้งานฟังก์ชันที่ไม่จำเป็น: no_rc และ no_sync
ต้นน้ำ เพื่อให้กรณีการใช้งานเคอร์เนลได้รับการสนับสนุนอย่างดี หรือ "ผสม" ตัวเลือกที่เคอร์เนลต้องการอย่างแม่นยำยิ่งขึ้น แกนอัปสตรีมจึงเพิ่ม no_fp_fmt_parse
ในทางกลับกัน Rust ได้เปิดใช้งานชุดการวินิจฉัยเพิ่มเติมสำหรับคอมไพเลอร์ Rust และ Clippy ข้อแตกต่างอย่างหนึ่งจาก C คือการวินิจฉัย Rust นั้นง่ายต่อการปิดการใช้งานในโค้ดเล็กน้อย ซึ่งในกรณีทั่วไปจะเข้มงวดกว่า
ด้วย มีการนำบทคัดย่อและการอัปเดตไดรเวอร์มาใช้แล้ว. ทีมงานได้เพิ่มสิ่งที่เป็นนามธรรมสำหรับการล็อกสตรีม การเรียกกลับการจัดการพลังงาน หน่วยความจำ io (readX / writeX) ชิป irq และตัวจัดการสตรีมระดับสูง ชิป gpio (รวมถึงชิป irq) อุปกรณ์ต่อพ่วง อุปกรณ์ต่อพ่วง amba และไดรเวอร์
การสนับสนุนของ คอนโทรลเลอร์ได้รับการปรับปรุงด้วยโครงสร้างพื้นฐานที่เป็นอิสระของบัส ออบเจ็กต์ที่เพิกถอนได้ mutexes ที่เพิกถอนได้ ตัววนซ้ำบิตที่มีประสิทธิภาพ การวินิจฉัยแพนิคที่ดีขึ้น และเครื่องห่อหุ้มตัวชี้แบบง่าย นอกจากนี้ยังปรับปรุงและทำให้วัตถุ Ref ง่ายขึ้น (เข้ากันได้กับ refcount_t) และแทนที่อินสแตนซ์ Rust ทั้งหมด
และไดรเวอร์ใหม่สำหรับอุปกรณ์ gpio PL061 ได้รับการติดตั้งและจัดส่งเป็นแพตช์ RFC
สุดท้ายควรสังเกตว่า การรองรับสนิมยังถือเป็นการทดลอง. อย่างไรก็ตาม การสนับสนุนดีพอที่นักพัฒนาเคอร์เนลเริ่มทำงาน ใน Rust abstractions สำหรับเขียนระบบย่อยและคอนโทรลเลอร์และโมดูลอื่น ๆ ซีรีส์ปัจจุบันเพิ่งมาถึง Linux-next ดังนั้นการรันครั้งแรกจะมีขึ้นในสัปดาห์นี้
Fuente: https://lkml.org/lkml