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