แพตช์รุ่นที่สี่สำหรับการรองรับไดรเวอร์ Rust บน Linux ได้รับการเผยแพร่แล้ว

มิเกล โอเจด้าผู้เขียนโครงการ 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

สุดท้ายนี้ หากคุณสนใจทราบข้อมูลเพิ่มเติมเกี่ยวกับเวอร์ชันใหม่นี้ เข้าไปดูรายละเอียดได้ที่ ในลิงค์ต่อไปนี้.


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. รับผิดชอบข้อมูล: AB Internet Networks 2008 SL
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา