มิเกล โอเจด้าผู้เขียนโครงการ Rust-for-Linux Teme เพิ่งเปิดเผยข้อเสนอที่สี่สำหรับ ส่วนประกอบไดรเวอร์อุปกรณ์ สนิมสำหรับนักพัฒนาเคอร์เนล Linux ที่จะต้องพิจารณา
การสนับสนุนสนิมถือเป็นการทดลอง แต่ได้รับการตกลงที่จะรวมไว้ใน linux-next branch แล้ว และโตพอที่จะเริ่มทำงานบนเลเยอร์ abstraction ที่ด้านบนของระบบย่อยเคอร์เนล เช่นเดียวกับการเขียนไดรเวอร์และโมดูล การพัฒนาได้รับทุนจาก Google และ ISRG (Internet Security Research Group) ซึ่งเป็นผู้ก่อตั้งโครงการ Let's Encrypt และส่งเสริม HTTPS และการพัฒนาเทคโนโลยีเพื่อเพิ่มความปลอดภัยอินเทอร์เน็ต
สำหรับผู้ที่ยังไม่ทราบการเปลี่ยนแปลงที่เสนอควรรู้ว่าทำให้เป็นไปได้ การใช้ Rust เป็นภาษาที่สองในการพัฒนาคอนโทรลเลอร์และโมดูล ของเคอร์เนล การสนับสนุน Rust จะแสดงเป็นตัวเลือกที่ไม่ได้เปิดใช้งานโดยค่าเริ่มต้น และไม่ส่งผลให้ Rust รวมอยู่ในการพึ่งพา build ที่จำเป็นสำหรับเคอร์เนล
ใช้ Rust เพื่อพัฒนาไดรเวอร์ จะช่วยให้คุณสร้างไดรเวอร์ที่ดีขึ้นและปลอดภัยยิ่งขึ้นโดยใช้ความพยายามเพียงเล็กน้อยโดยไม่มีปัญหา เช่น การเข้าถึงพื้นที่หน่วยความจำหลังจากทำให้ว่างแล้ว ยกเลิกการอ้างอิงตัวชี้ null และบัฟเฟอร์โอเวอร์โฟลว์
ความปลอดภัยของหน่วยความจำมีให้ใน Rust ในเวลาคอมไพล์โดยการตรวจสอบการอ้างอิง การติดตามความเป็นเจ้าของอ็อบเจ็กต์ และอายุของอ็อบเจ็กต์ (ขอบเขต) ตลอดจนการประเมินความถูกต้องของการเข้าถึงหน่วยความจำระหว่างการใช้งานโค้ด
Rust ยังให้การป้องกันโอเวอร์โฟลว์จำนวนเต็ม กำหนดให้ตัวแปรต้องเริ่มต้นก่อนใช้งาน จัดการกับข้อผิดพลาดในไลบรารีมาตรฐานได้ดีกว่า บังคับใช้แนวคิดของตัวแปรที่ไม่เปลี่ยนรูปและการอ้างอิงตามค่าเริ่มต้น และเสนอการพิมพ์สแตติกที่แข็งแกร่งเพื่อลดข้อผิดพลาดทางตรรกะ
การเปลี่ยนแปลงในภาคที่สี่คืออะไร?
ในเวอร์ชันใหม่ของแพตช์ที่นำเสนอนี้ จะมีการกล่าวถึงความคิดเห็นที่เกิดขึ้นระหว่างการอภิปรายเกี่ยวกับแพตช์ฉบับที่หนึ่ง สอง และสาม ยังคงถูกกำจัดออกไป
เราจะทำการอัปเดตต่อไปจนกว่าเราจะไม่พึ่งพาคุณลักษณะที่ไม่เสถียรใดๆ
เมื่อถึงจุดนี้เราอาจต้องการเริ่มประกาศ Rust . เวอร์ชันขั้นต่ำ
ได้รับการสนับสนุน เช่นเดียวกับที่ทำเสร็จแล้ว ตัวอย่างเช่น สำหรับ GCC และ Clangในทำนองเดียวกัน เรายังได้ย้ายไปยังภาษา Rust รุ่นปี 2021 ด้วย
สำหรับการเปลี่ยนแปลงอื่นๆ ที่เกิดขึ้นในเวอร์ชันใหม่นี้ ประกาศกล่าวถึงสิ่งต่อไปนี้:
- เปลี่ยนไปใช้ Rust 1.58.0 ที่เสถียรเป็นคอมไพเลอร์อ้างอิง
- การเปลี่ยนแปลงที่จำเป็นสำหรับโครงการซึ่งยังไม่รวมอยู่ในชุดเครื่องมือ Rust หลัก รวมถึงแฟล็ก "-Zsymbol-mangling-version=v0" (คาดหวังใน Rust 1.59.0) และโหมด "maybe_uninit_extra" (คาดหวังใน Rust 1.60.0) .
- มีการเพิ่มการตรวจสอบความพร้อมใช้งานของเครื่องมือ Rust โดยอัตโนมัติและความเหมาะสมและความสามารถในการทดสอบการรองรับ Rust บนระบบยังได้รับการขยายอีกด้วย
- มีการเสนอ abstractions ใหม่เพื่อให้สามารถเข้าถึงตารางตัวระบุอุปกรณ์ ("IdArray" และ "IdTable") จากรหัส Rust
- เพิ่มเลเยอร์สำหรับการเรียกฟังก์ชันที่เกี่ยวข้องกับตัวจับเวลา (กรอบนาฬิกา)
- ขณะนี้ตัวควบคุมแพลตฟอร์มถูกกำหนดผ่านการใช้งานลักษณะ
- มีการเพิ่มมาโครใหม่เพื่อลดความซับซ้อนในการลงทะเบียนไดรเวอร์แพลตฟอร์มและมีการเสนอเทมเพลตไดรเวอร์ทั่วไปใหม่
- เพิ่มมาโครใหม่สำหรับโครงสร้าง "dev_*"
- เพิ่มวิธีการใหม่ "{read,write}*_relaxed" สำหรับ IoMem type .
- ลบคุณสมบัติ FileOpener เพื่อทำให้การดำเนินการไฟล์ง่ายขึ้น
- เพิ่มพารามิเตอร์ "ThisModule" ให้กับจำนวนอาร์กิวเมนต์ที่ส่งผ่านระหว่างการลงทะเบียนคอนโทรลเลอร์
- มีการเสนอเทมเพลตทั่วไปสำหรับการสร้างโมดูลเคอร์เนลในภาษา Rust
สุดท้ายนี้ หากคุณสนใจทราบข้อมูลเพิ่มเติมเกี่ยวกับเวอร์ชันใหม่นี้ เข้าไปดูรายละเอียดได้ที่ ในลิงค์ต่อไปนี้.