แพตช์เวอร์ชันที่สิบสำหรับเคอร์เนล Linux ที่รองรับภาษา Rust

Miguel Ojeda ผู้เขียนโครงการ Rust-for-Linux ได้เสนอการเปิดตัวส่วนประกอบ v10 สำหรับการพัฒนาไดรเวอร์อุปกรณ์ Rust สำหรับนักพัฒนาเคอร์เนล Linux ที่ต้องพิจารณา นี่เป็นแพทช์รุ่นที่ 6.1 โดยคำนึงถึงเวอร์ชันแรกที่เผยแพร่โดยไม่มีหมายเลขเวอร์ชัน การรวมการรองรับ Rust ได้รับการอนุมัติโดย Linusum Torvalds เพื่อรวมไว้ในเคอร์เนล Linux XNUMX เว้นแต่จะเกิดปัญหาที่คาดไม่ถึง การพัฒนาได้รับทุนจาก 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

เพิ่มความคิดเห็น