Rust สำหรับ Linux มีการปรับปรุงหลายอย่างเพื่อรองรับ

ในช่วงหลายเดือนที่ผ่านมา นักพัฒนา Linux ทะเลาะกัน ความเป็นไปได้ของ อนุญาตให้ใช้ภาษาสนิม เพื่อเขียนไดรเวอร์อุปกรณ์ใหม่สำหรับเคอร์เนล

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

ตามคำแถลงนี้ Linus Torvalds วิศวกรซอฟต์แวร์ ผู้สร้างหลัก และผู้พัฒนาเคอร์เนล Linux กล่าวในการให้สัมภาษณ์ว่าการสนทนาในหัวข้อนี้จะมีความสำคัญมากกว่าการโพสต์ Google ที่มีความยาวในภาษามาก

เมื่อถามถึงข้อเสนอแนะในการใช้ Rust เขาระบุว่า "วิธีแก้ปัญหาที่นี่ง่ายมาก แค่ใช้ C ++ แทน Rust"

หลังจากนั้น ในเดือนมีนาคมเปิดตัวการสนับสนุนครั้งแรกe ซึ่งอนุญาตให้วางไดรเวอร์ Rust ในทรี Linux-Next สำหรับการทดสอบเพิ่มเติมก่อนที่จะรวมไว้ในเคอร์เนลหลักในที่สุด

ด้านหลังเป็น "คำขอความคิดเห็น" ที่ออกใหม่ในรายการส่งเมลเคอร์เนลเกี่ยวกับเปอร์สเปคทีฟของรหัส Rust สำหรับเคอร์เนล Linux

มิเกล โอเจด้าผู้พัฒนาเคอร์เนล Linux เริ่มข้อเสนอขอความคิดเห็น (RFC) ในรายการส่งเมลเคอร์เนลของ Linux

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

“พวกคุณบางคนสังเกตเห็นในช่วงไม่กี่สัปดาห์หรือหลายเดือนมานี้ว่ามีความพยายามอย่างจริงจังในการนำภาษาที่สองมาสู่เคอร์เนล ในที่สุดเราก็อยู่ที่นั่นด้วย RFC ที่เพิ่มการรองรับ Rust ให้กับเคอร์เนล Linux” Miguel Ojeja กล่าว "เรารู้ว่ามีค่าใช้จ่ายและความเสี่ยงมหาศาลในการแนะนำภาษาใหม่ให้กับเคอร์เนล" เขากล่าวเสริม

ทีมงานโครงการ Rust for Linux ย้ายจากคอมไพเลอร์ Rust เบต้าไปใช้รุ่นที่เสถียรโดยจะโยกย้ายทุกครั้งที่ออกเวอร์ชันใหม่

Miguel กล่าวว่า "เราขอขอบคุณ Rust ที่ร่วมงานกับเราในตัวเลือกเหล่านี้ เพื่อให้เคอร์เนลสามารถใช้งานได้

เมื่อทำการอัพเดทคอมไพเลอร์ทีมงาน สามารถลบคุณสมบัติที่ไม่เสถียรออกจากรายการได้: const_fn_transmute, const_panic, const_unreachable_unchecked, core_panic และ try_reserve

นอกจากนี้ ยังเน้นย้ำว่า มีการเพิ่มตัวเลือกการทำให้เป็นโมดูลบางส่วน เพิ่มเติมเพื่อจัดสรรเพื่อปิดใช้งานฟังก์ชันที่ไม่จำเป็น: no_rc และ no_sync

ต้นน้ำ เพื่อให้กรณีการใช้งานเคอร์เนลได้รับการสนับสนุนอย่างดี หรือ "ผสม" ตัวเลือกที่เคอร์เนลต้องการอย่างแม่นยำยิ่งขึ้น แกนอัปสตรีมจึงเพิ่ม no_fp_fmt_parse

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

ด้วย มีการนำบทคัดย่อและการอัปเดตไดรเวอร์มาใช้แล้ว. ทีมงานได้เพิ่มสิ่งที่เป็นนามธรรมสำหรับการล็อกสตรีม การเรียกกลับการจัดการพลังงาน หน่วยความจำ io (readX / writeX) ชิป irq และตัวจัดการสตรีมระดับสูง ชิป gpio (รวมถึงชิป irq) อุปกรณ์ต่อพ่วง อุปกรณ์ต่อพ่วง amba และไดรเวอร์

การสนับสนุนของ คอนโทรลเลอร์ได้รับการปรับปรุงด้วยโครงสร้างพื้นฐานที่เป็นอิสระของบัส ออบเจ็กต์ที่เพิกถอนได้ mutexes ที่เพิกถอนได้ ตัววนซ้ำบิตที่มีประสิทธิภาพ การวินิจฉัยแพนิคที่ดีขึ้น และเครื่องห่อหุ้มตัวชี้แบบง่าย นอกจากนี้ยังปรับปรุงและทำให้วัตถุ Ref ง่ายขึ้น (เข้ากันได้กับ refcount_t) และแทนที่อินสแตนซ์ Rust ทั้งหมด

และไดรเวอร์ใหม่สำหรับอุปกรณ์ gpio PL061 ได้รับการติดตั้งและจัดส่งเป็นแพตช์ RFC

สุดท้ายควรสังเกตว่า การรองรับสนิมยังถือเป็นการทดลอง. อย่างไรก็ตาม การสนับสนุนดีพอที่นักพัฒนาเคอร์เนลเริ่มทำงาน ใน Rust abstractions สำหรับเขียนระบบย่อยและคอนโทรลเลอร์และโมดูลอื่น ๆ ซีรีส์ปัจจุบันเพิ่งมาถึง Linux-next ดังนั้นการรันครั้งแรกจะมีขึ้นในสัปดาห์นี้

Fuente: https://lkml.org/lkml


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

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

*

*

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