มิเกล โอเจดา ผู้เขียนโครงการ Rust-for-Linuxเสนอให้ผู้พัฒนาเคอร์เนลพิจารณา Linux เผยแพร่เวอร์ชัน 10 ของส่วนประกอบการพัฒนาไดรเวอร์อุปกรณ์ Rust นี่คือเวอร์ชันแก้ไขข้อบกพร่องที่สิบเอ็ด โดยนับรวมเวอร์ชันแรกที่เผยแพร่โดยไม่มีหมายเลขเวอร์ชัน การเพิ่มการสนับสนุน Rust ได้รับการอนุมัติจาก Linus Torvalds ให้รวมอยู่ในเคอร์เนลแล้ว Linux 6.1 เว้นแต่จะมีปัญหาที่ไม่คาดคิดเกิดขึ้น การพัฒนานี้ได้รับการสนับสนุนทางการเงินจาก Google และ ISRG (Internet Security Research Group) ซึ่งเป็นผู้ก่อตั้งโครงการ Let's Encrypt ที่ส่งเสริม HTTPS และการพัฒนาเทคโนโลยีเพื่อปรับปรุงความปลอดภัยทางอินเทอร์เน็ต
เช่นเดียวกับแพทช์ก่อนหน้า เวอร์ชัน v10 นี้ได้รับการปรับลดฟังก์ชันการทำงานลงเหลือเพียงขั้นต่ำสุด เพียงพอสำหรับการสร้างโมดูลเคอร์เนลอย่างง่ายที่เขียนด้วยภาษา Rust ความแตกต่างจากเวอร์ชันก่อนหน้าประกอบด้วยการแก้ไขเล็กน้อย การแทนที่ sizeof ด้วย ARRAY_SIZE ใน kallsyms.c และการปรับแพทช์ให้เข้ากับเคอร์เนล v6.0-rc7 คาดว่าแพทช์ขั้นต่ำนี้ ซึ่งมีขนาดลดลงจาก 40 บรรทัดเหลือ 13 บรรทัด จะช่วยให้การนำการสนับสนุน Rust มาใช้ในเคอร์เนลหลักง่ายขึ้น หลังจากตรวจสอบให้แน่ใจว่าการสนับสนุนขั้นต่ำเสร็จสมบูรณ์แล้ว มีแผนที่จะค่อยๆ ขยายฟังก์ชันการทำงานที่มีอยู่ โดยย้ายการเปลี่ยนแปลงอื่นๆ จากสาขา Rust-for- มาใช้Linux.
การเปลี่ยนแปลงที่เสนอทำให้สามารถใช้ Rust เป็นภาษาที่สองในการพัฒนาไดรเวอร์และโมดูลเคอร์เนลได้ การสนับสนุน Rust จะแสดงเป็นตัวเลือกที่ไม่ได้เปิดใช้งานตามค่าเริ่มต้น และไม่ส่งผลให้มีการรวม Rust ไว้ในการขึ้นต่อกันของ build ที่จำเป็นสำหรับเคอร์เนล การใช้ Rust เพื่อพัฒนาไดรเวอร์จะช่วยให้คุณสร้างไดรเวอร์ที่ปลอดภัยและดีขึ้นได้โดยใช้ความพยายามเพียงเล็กน้อย ปราศจากปัญหาต่างๆ เช่น การเข้าถึงพื้นที่หน่วยความจำหลังจากที่ปล่อยว่างแล้ว การยกเลิกการอ้างอิงพอยน์เตอร์พอยน์เตอร์ และการโอเวอร์รันบัฟเฟอร์
การจัดการที่ปลอดภัยต่อหน่วยความจำมีให้ใน Rust ณ เวลาคอมไพล์ผ่านการตรวจสอบการอ้างอิง การติดตามความเป็นเจ้าของอ็อบเจกต์และอายุอ็อบเจกต์ (ขอบเขต) ตลอดจนผ่านการประเมินความถูกต้องของการเข้าถึงหน่วยความจำระหว่างการเรียกใช้โค้ด สนิมยังให้การป้องกันการล้นของจำนวนเต็ม, จำเป็นต้องมีการกำหนดค่าเริ่มต้นที่จำเป็นของค่าตัวแปรก่อนใช้งาน, จัดการข้อผิดพลาดได้ดีขึ้นในไลบรารีมาตรฐาน, ใช้แนวคิดของการอ้างอิงและตัวแปรที่ไม่เปลี่ยนรูปแบบตามค่าเริ่มต้น, เสนอการพิมพ์แบบคงที่ที่แข็งแกร่งเพื่อลดข้อผิดพลาดเชิงตรรกะ
ที่มา: opennet.ru
