ในเดือนมีนาคมของปีนี้บน linux-next branch ซึ่งในขณะนั้นมันใช้งานได้กับเคอร์เนลลินุกซ์ 5.13 รวมชุดส่วนประกอบเริ่มต้นเพื่อพัฒนาไดรเวอร์อุปกรณ์ใน ภาษา สนิมและตอนนี้ได้ทำการร้องขอเพื่อรวมรุ่นที่สอง ของแพตช์เพื่อเพิ่มการรองรับ Rust ให้กับเคอร์เนล Linux
ผู้ที่ส่งคำขอไปยังนักพัฒนา Linux คือ Miguel Ojeda ผู้เขียนโครงการ Rust-for-Linux และคนที่เราพูดถึงเมื่อไม่กี่วันก่อนด้วยเนื่องจากเขาได้รับการว่าจ้างให้ดูแลโครงการ "Prossimo" ซึ่งโดยพื้นฐานแล้ว มุ่งเน้นไปที่การประสานงานเพื่อย้ายโครงสร้างพื้นฐานซอฟต์แวร์ที่สำคัญไปยังรหัสที่ปลอดภัยเพื่อรักษาความปลอดภัยหน่วยความจำเคอร์เนล Linux ด้วย Rust (หากคุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับโครงการ คุณสามารถปรึกษา โพสตามลิงค์ด้านล่างครับ)
คำขอที่ส่งโดย Miguel Ojeda เป็นเวอร์ชันที่อัปเดตครั้งที่สอง ของส่วนประกอบสำหรับการพัฒนาไดรเวอร์อุปกรณ์ในภาษา Rust และความคิดเห็นที่ทำระหว่างการสนทนาเกี่ยวกับแพทช์เวอร์ชันแรกจะถูกลบออก และ Linus Torvalds ได้เข้าร่วมการสนทนาแล้วและแนะนำให้เปลี่ยนตรรกะเพื่อประมวลผลการดำเนินการบิต
ภายในประโยชน์ ที่กล่าวถึงก็คือ รับประกันการจัดการหน่วยความจำที่ปลอดภัยใน Rust ในเวลารวบรวมโดยการตรวจสอบการอ้างอิง การติดตามความเป็นเจ้าของอ็อบเจ็กต์ และอายุของอ็อบเจ็กต์ ตลอดจนการประเมินความถูกต้องของการเข้าถึงหน่วยความจำในขณะใช้งาน
สนิมยังให้ การป้องกันโอเวอร์โฟลว์จำนวนเต็ม, ต้องมีการเริ่มต้นค่าตัวแปรที่จำเป็นก่อนใช้งาน จัดการกับข้อผิดพลาดในไลบรารีมาตรฐานได้ดีกว่า ใช้แนวคิดของการอ้างอิงและตัวแปรที่ไม่เปลี่ยนรูปโดยค่าเริ่มต้น และเสนอการเขียนสแตติกที่แข็งแกร่งเพื่อลดข้อผิดพลาดทางตรรกะ
จากการเปลี่ยนแปลงที่โดดเด่น ของแพตช์เวอร์ชั่นใหม่นี้มีการกล่าวถึง:
- รหัสการจัดสรรหน่วยความจำป้องกันความเป็นไปได้ในการสร้างสภาวะตื่นตระหนกเมื่อเกิดข้อผิดพลาด เช่น หน่วยความจำไม่เพียงพอ
- รวมอยู่ด้วย ไลบรารี่ของ Rust alloc ที่เปลี่ยนรหัสซึ่งมีการทำงานใหม่เพื่อจัดการกับการล็อคแต่เป้าหมายสุดท้ายคือการนำคุณสมบัติที่จำเป็นทั้งหมดสำหรับเคอร์เนลไปยังรุ่นหลักของ alloc (การเปลี่ยนแปลงได้จัดเตรียมและส่งต่อไปยังไลบรารี Rust มาตรฐานแล้ว)
- แทนที่จะใช้บิลด์ทุกคืน ตอนนี้สามารถใช้เวอร์ชันเบต้าและเวอร์ชันเสถียรได้แล้ว คอมไพเลอร์ rustc เพื่อคอมไพล์เคอร์เนลที่เปิดใช้งาน Rust ปัจจุบัน rustc 1.54-beta1 ถูกใช้เป็นคอมไพเลอร์อ้างอิง แต่หลังจากปล่อย 1.54 เมื่อสิ้นเดือน มันจะได้รับการสนับสนุนเป็นคอมไพเลอร์อ้างอิง
- เพิ่มการรองรับการเขียนการทดสอบโดยใช้แอตทริบิวต์ Rust มาตรฐาน "# [test]" และความสามารถในการใช้ doctests เพื่อใช้โค้ดตัวอย่างจากเอกสารประกอบเป็นการทดสอบ
- เพิ่มการรองรับสถาปัตยกรรม ARM32 และ RISCV นอกเหนือจาก x86_64 และ ARM64 ที่รองรับก่อนหน้านี้
ปรับปรุงการใช้งาน GCC Rust (ส่วนหน้า GCC สำหรับ Rust) และ rustc_codegen_gcc (แบ็กเอนด์ rustc สำหรับ GCC) ซึ่งตอนนี้ผ่านเกณฑ์มาตรฐานทั้งหมดแล้ว - อา ระดับใหม่ของนามธรรม เพื่อให้โปรแกรม Rust ใช้กลไกเคอร์เนลที่เขียนด้วยภาษา C เช่น tree, อ็อบเจกต์การนับอ้างอิง, การสร้าง file descriptor, งาน, ไฟล์ และเวกเตอร์ I/O
- ส่วนประกอบการพัฒนาไดรเวอร์ได้ปรับปรุงการรองรับโมดูล "file_operations", "โมดูล!" มาโคร การบันทึกแมโคร และไดรเวอร์พื้นฐาน (โพรบและลบ)
- Binder รองรับการส่งตัวอธิบายไฟล์และลิงก์ LSM
- ตัวอย่างที่ใช้งานได้ดีกว่าของไดรเวอร์ Rust, bcm2835-rng ถูกเสนอสำหรับตัวสร้างหมายเลขสุ่มฮาร์ดแวร์สำหรับบอร์ด Raspberry Pi
สุดท้ายหากคุณสนใจที่จะทราบข้อมูลเพิ่มเติมคุณสามารถปรึกษารายละเอียดได้ ในลิงค์ต่อไปนี้.