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

หกเดือนหลังจากการตีพิมพ์ฉบับที่สอง, มิเกล โอเจด้าผู้เขียนโครงการ Rust-for-Linux ทำให้ทราบข้อเสนอของทางเลือกที่สาม สำหรับการพัฒนาไดรเวอร์อุปกรณ์ในภาษา Rust ใน Linux Kernel

การสนับสนุนการเกิดสนิมถือเป็นการทดลอง แต่ได้มีการตกลงที่จะรวมไว้ในสาขา linux-next แล้ว การพัฒนาได้รับทุนจาก Google และองค์กร ISRG (Internet Security Research Group) ซึ่งเป็นผู้ก่อตั้งโครงการ Let's Encrypt และมีส่วนช่วยในการส่งเสริม HTTPS และการพัฒนาเทคโนโลยีเพื่อปรับปรุงความปลอดภัยทางอินเทอร์เน็ต

ควรจำไว้ว่าการเปลี่ยนแปลงที่เสนอให้ Rust ถูกใช้เป็นภาษาที่สองในการพัฒนาไดรเวอร์เคอร์เนลและโมดูล

ไดรเวอร์สนิมบน Linux
บทความที่เกี่ยวข้อง:
แพตช์เวอร์ชั่นที่สองสำหรับการรองรับไดรเวอร์ Rust บน Linux ได้จัดส่งไปแล้ว

การสนับสนุน Rust ถูกโฆษณาเป็นตัวเลือกที่ไม่ได้ใช้งานโดยค่าเริ่มต้น และไม่ส่งผลให้ Rust ถูกรวมอยู่ในการพึ่งพาการสร้างพื้นฐานที่จำเป็น การใช้ Rust สำหรับการพัฒนาไดรเวอร์จะช่วยให้คุณสร้างไดรเวอร์ที่ดีขึ้นและปลอดภัยยิ่งขึ้นด้วยความพยายามเพียงเล็กน้อย โดยไม่ต้องวุ่นวายกับการเข้าถึงพื้นที่หน่วยความจำเมื่อว่างแล้ว ยกเลิกการอ้างอิงพอยน์เตอร์ว่าง และเกินขีดจำกัดของบัฟเฟอร์

แพตช์เวอร์ชันใหม่ยังคงลบความคิดเห็นที่เกิดขึ้นระหว่างการสนทนาเกี่ยวกับแพตช์เวอร์ชันแรกและเวอร์ชันที่สอง และการเปลี่ยนแปลงที่โดดเด่นที่สุดที่เราพบ:

เปลี่ยนเป็นเวอร์ชันเสถียรของ Rust 1.57 ในฐานะคอมไพเลอร์อ้างอิงและการผูกมัดกับรุ่นเสถียรของภาษา Rust 2021 ได้รับการรักษาความปลอดภัยแล้ว การเปลี่ยนไปใช้ข้อกำหนด Rust 2021 pได้รับอนุญาตให้เริ่มทำงานเพื่อหลีกเลี่ยงการใช้คุณสมบัติที่ไม่เสถียรดังกล่าว ในแพตช์เช่น const_fn_transmute, const_panic, const_unreachable_unchecked และ core_panic และ try_reserve

และยังโดดเด่นอีกด้วย การพัฒนาเวอร์ชันการจัดสรรยังคงดำเนินต่อไป จากไลบรารี Rust ในเวอร์ชันใหม่ มีการใช้ตัวเลือก "no_rc" และ "no_sync" เพื่อปิดใช้งานฟังก์ชันนี้ ซึ่งไม่ได้ใช้ในโค้ด Rust สำหรับเคอร์เนล ทำให้ไลบรารีเป็นแบบโมดูลาร์มากขึ้น เรายังคงทำงานร่วมกับผู้พัฒนาที่จัดสรรหลักเพื่อนำการเปลี่ยนแปลงเคอร์เนลที่จำเป็นมาสู่ไลบรารีหลัก ตัวเลือก "no_fp_fmt_parse" ซึ่งจำเป็นสำหรับไลบรารีในการทำงานที่ระดับเคอร์เนล ได้ถูกย้ายไปยังไลบรารีฐานของ Rust (เคอร์เนล)

ล้างโค้ดเพื่อลบคำเตือนของคอมไพเลอร์ที่เป็นไปได้ เมื่อรวบรวมเคอร์เนลในโหมด CONFIG_WERROR เมื่อสร้างโค้ดใน Rust โหมดคอมไพเลอร์การวินิจฉัยเพิ่มเติมและคำเตือนเกี่ยวกับ Clippy linter จะรวมอยู่ด้วย

พวกเขาเสนอ นามธรรมเพื่อใช้ seqlocks (ล็อคลำดับ), การเรียกเรียกกลับสำหรับการจัดการพลังงาน, หน่วยความจำ I / O (readX / writeX), ตัวจัดการการขัดจังหวะและเธรด, GPIO, การเข้าถึงอุปกรณ์, ไดรเวอร์ และข้อมูลประจำตัวในรหัสสนิม

มีการขยายเครื่องมือพัฒนาไดรเวอร์ ด้วยการใช้ mutexes ที่เปลี่ยนตำแหน่งได้ ตัววนซ้ำบิต การเชื่อมโยงที่ง่ายขึ้นบนพอยน์เตอร์ การวินิจฉัยข้อผิดพลาดที่ปรับปรุง และโครงสร้างพื้นฐานที่ไม่ขึ้นกับบัสข้อมูล

ปรับปรุงการทำงานกับลิงก์โดยใช้ Ref type ง่ายขึ้น โดยอิงตามแบ็กเอนด์ refcount_t ซึ่งใช้ API กลางที่มีชื่อเดียวกันเพื่อนับการอ้างอิง การสนับสนุนสำหรับประเภท Arc และ Rc ที่มีให้ในไลบรารีการแมปมาตรฐานถูกลบออกและไม่สามารถใช้ได้ในโค้ดที่รันที่ระดับเคอร์เนล

เพิ่มเวอร์ชันของไดรเวอร์ PL061 GPIO ที่เขียนใหม่ใน Rust ลงในแพตช์แล้ว คุณลักษณะของไดรเวอร์คือการใช้งานแบบบรรทัดต่อบรรทัดซ้ำกับไดรเวอร์ C GPIO ที่มีอยู่ สำหรับนักพัฒนาที่ต้องการทำความคุ้นเคยกับตัวควบคุมอาคารใน Rust ได้มีการเตรียมการเปรียบเทียบแบบทีละบรรทัดซึ่งช่วยให้เข้าใจว่าโค้ด C ของ Rust สร้างขึ้นคืออะไร

ฐานข้อมูลหลักของ Rust ใช้ rustc_codegen_gcc ซึ่งเป็นแบ็กเอนด์ rustc สำหรับ GCC ที่ใช้การคอมไพล์ AOT โดยใช้ไลบรารี libgccjit ด้วยการพัฒนาแบ็กเอนด์อย่างเหมาะสม มันจะช่วยให้คุณรวบรวมรหัส Rust ที่เกี่ยวข้องกับเคอร์เนลโดยใช้ GCC
นอกจาก ARM, Google และ Microsoft แล้ว Red Hat ยังแสดงความสนใจในการใช้ Rust ในเคอร์เนล Linux

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


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

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

*

*

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