Rust ไม่ได้รับการยกเว้นจากการวิพากษ์วิจารณ์ของ Linus Torvalds

ไม่กี่สัปดาห์ที่ผ่านมา ข่าวเกี่ยวกับ การใช้งานบางอย่างที่ทำใน linux-next branch ซึ่งรวมถึงชุดส่วนประกอบเริ่มต้น เพื่อพัฒนาไดรเวอร์อุปกรณ์ ในภาษา Rust

เอกสารนี้เผยแพร่แยกต่างหากเกี่ยวกับการใช้ Rust ในเคอร์เนล Linux และตัวอย่างของโมดูลเคอร์เนลที่มีไดรเวอร์อุปกรณ์อักขระในภาษา Rust รหัสถูกเพิ่มโดย Stephen Rothwell ผู้ดูแลสาขา

หลังจากนั้น Linus Torvalds ก็ตรวจสอบการใช้งาน แพทช์ความเป็นไปได้ในการตั้งค่าไดรเวอร์ภาษา Rust ในเคอร์เนลลินุกซ์ และเปล่งเสียงวิจารณ์

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

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

ปัญหาอื่นคือการพยายามใช้ทศนิยมหรือประเภท 128 บิต ซึ่งไม่ถูกต้องสำหรับสภาพแวดล้อมเช่นเคอร์เนล Linux

คุณอาจไม่เข้าใจการแตกแขนงของเวลาที่มันสามารถเกิดขึ้นได้ดังนั้นบางที
เป็นปัญหาน้อยกว่าที่ฉันคิด แต่โดยพื้นฐานแล้ว
ฉันคิดว่าหากการทำแผนที่สนิมใด ๆ อาจทำให้เกิดความตื่นตระหนกได้
_ ไม่ยอมรับโดยพื้นฐาน

การแมปล้มเหลวในคอนโทรลเลอร์หรือโค้ดที่ไม่ใช่คอร์และนั่นคือสำหรับ
คำจำกัดความรหัสสนิมใหม่ทั้งหมดไม่สามารถก่อให้เกิดได้
ตื่นตระหนกอย่างถูกต้อง เช่นเดียวกันกับ«โอ้ในบางกรณีฉันไม่ได้ลองใช้ไฟล์
จำนวนเต็ม 128 บิตหรือจุดลอยตัว '

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

สิ่งนี้กลายเป็นปัญหาที่รุนแรงมากขึ้นตั้งแต่ในขณะนี้ ห้องสมุดกลางของ Rust ไม่สามารถแบ่งแยกได้และแสดงถึงรอยเปื้อนขนาดใหญ่; ไม่มีทางที่จะขอเพียงคุณสมบัติบางอย่างได้ดังนั้นจึงควรหลีกเลี่ยงการใช้ฟังก์ชันที่มีปัญหาอย่างใดอย่างหนึ่ง

วิธีแก้ปัญหาอาจต้องมีการเปลี่ยนแปลงคอมไพเลอร์สนิมและไลบรารีแม้ว่าทีมงานยังไม่มีกลยุทธ์ในการใช้โมดูลาร์สำหรับไลบรารีภาษา

นอกจากนี้ Torvalds ชี้ให้เห็นว่าคอนโทรลเลอร์ตัวอย่างที่ให้มานั้นไม่มีประโยชน์ และแนะนำให้แนบเป็นตัวอย่างไดรเวอร์ที่ช่วยแก้ปัญหาที่แท้จริงอย่างใดอย่างหนึ่ง

ก่อนหน้านี้ Google ประกาศการมีส่วนร่วมในการริเริ่มเพื่อส่งเสริมการสนับสนุน Rust ในเคอร์เนล Linux y ให้แง่มุมทางเทคนิค ความเป็นไปได้ในการนำ Rust ไปใช้เพื่อต่อสู้กับปัญหาที่เกิดจากข้อผิดพลาดในการทำงานกับหน่วยความจำ

Google คิดว่า Rust พร้อมที่จะเข้าร่วม C เป็นภาษาพัฒนาแล้ว ส่วนประกอบเคอร์เนลของลินุกซ์ บทความนี้ยังให้ตัวอย่างการใช้ภาษา Rust เพื่อพัฒนาไดรเวอร์เคอร์เนลในบริบทของการใช้งานบนแพลตฟอร์ม Android (Rust ได้รับการยอมรับว่าเป็นภาษาที่รองรับอย่างเป็นทางการสำหรับการพัฒนา Android)

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

ในรูปแบบปัจจุบันงานยังไม่เสร็จสมบูรณ์ แต่สำหรับองค์ประกอบพื้นฐานเกือบทั้งหมดของฟังก์ชันเคอร์เนลที่จำเป็นเพื่อให้ Binder ทำงานได้มีการเตรียมเลเยอร์ที่จะใช้นามธรรมเหล่านี้ในรหัสสนิม

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


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

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

*

*

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

  1.   มิเกลโรดริเกซ dijo

    การวิพากษ์วิจารณ์ทั้งหมดของพวกเขานั้นถูกต้องเนื่องจาก Rust เป็นภาษาใหม่ที่ทำงานร่วมกับกระบวนทัศน์ที่แตกต่างจากภาษา C จึงเป็นที่เข้าใจได้ถึงความกังวลเกี่ยวกับรายละเอียดใด ๆ ในไลบรารีหรือในตัวคอมไพเลอร์ซึ่งแม้ว่ารหัสจะถูกต้อง แต่ก็ทำให้เกิด เคอร์เนลแตกเช่นกันวิธีการใช้งานและสร้าง นั่นคือเหตุผลที่ข้อเสนอแนะเช่นความสามารถในการโมดูลาร์ไลบรารีเพื่อเรียกใช้และให้ใช้งานได้เฉพาะฟังก์ชันที่จำเป็นสำหรับโปรแกรม (หรือในกรณีนี้สำหรับคอนโทรลเลอร์ใด ๆ ) จึงทำงานได้อย่างถูกต้อง และสิ่งที่คุณขอนั้นไม่มีเหตุผลเพราะพวกเขานำคอนโทรลเลอร์ต้นแบบตัวจริงมาให้คุณซึ่งทำงานได้ดีกับปัญหาปัจจุบัน (หรืออย่างน้อยก็ทำงานเดียวกันกับที่มีอยู่ในเคอร์เนลและทำงานได้โดยไม่ต้องตกใจ)

  2.   Sete dijo

    ในบางครั้งฉันก็อ่านบทความซ้ำโดย Linux Adictos แต่ฉันใช้เวลาน้อยมากที่จะสิ้นหวังเมื่อเห็นว่าแม้จะมีเนื้อหาดีมาก แต่ผลลัพธ์สุดท้ายก็ถูกทำลายด้วยการสะกดที่น่ากลัว
    การสะกดและไวยากรณ์จะยากขนาดนั้นเลยเหรอ?
    ความอัปยศ!
    เชียร์!