โครงการ Kerla กำลังพัฒนาเคอร์เนลระบบปฏิบัติการที่เขียนด้วยภาษา Rust เคอร์เนลใหม่มุ่งเน้นไปที่การให้ความเข้ากันได้กับเคอร์เนล Linux ในระดับ ABI ซึ่งจะช่วยให้ไฟล์ปฏิบัติการที่ไม่มีการดัดแปลงที่คอมไพล์สำหรับ Linux สามารถทำงานในสภาพแวดล้อมที่ใช้ Kerla รหัสนี้เผยแพร่ภายใต้ลิขสิทธิ์ Apache 2.0 และ MIT โครงการนี้ได้รับการพัฒนาโดยนักพัฒนาชาวญี่ปุ่น Seiya Nuta ซึ่งเป็นที่รู้จักจากการสร้างระบบปฏิบัติการไมโครเคอร์เนล Resea ซึ่งเขียนด้วยภาษา C
ในขั้นตอนการพัฒนาปัจจุบัน Kerla สามารถทำงานบนระบบ x86_64 เท่านั้น และใช้งานการเรียกระบบพื้นฐาน เช่น การเขียน สถิติ mmap ไปป์และโพล รองรับสัญญาณ ไปป์ที่ไม่มีชื่อ และสวิตช์บริบท การเรียกเช่น fork, wait4 และ execve มีไว้เพื่อควบคุมกระบวนการ มีการรองรับ tty และ pseudo-terminal (pty) ระบบไฟล์ที่รองรับในปัจจุบันคือ initramfs (ใช้เพื่อเมานต์ระบบไฟล์รูท), tmpfs และ devfs มีการจัดสแต็กเครือข่ายที่รองรับซ็อกเก็ต TCP และ UDP โดยใช้งานตามไลบรารี smoltcp
นักพัฒนาได้เตรียมสภาพแวดล้อมการบูตที่ทำงานใน QEMU หรือในเครื่องเสมือน Firecracker พร้อมไดรเวอร์ virtio-net ซึ่งคุณสามารถเชื่อมต่อผ่าน SSH ได้แล้ว musl ถูกใช้เป็นไลบรารีระบบ และ BusyBox ถูกใช้เป็นยูทิลิตี้ผู้ใช้
มีการจัดเตรียมระบบบิลด์ที่ใช้ Docker ซึ่งช่วยให้คุณสร้าง boot initramfs ของคุณเองด้วยเคอร์เนล Kerla แยกกัน เชลล์ซอฟต์แวร์ nsh ที่คล้ายกับปลาและสแต็ก Kazari GUI ที่ใช้โปรโตคอล Wayland กำลังได้รับการพัฒนาแยกกัน
การใช้ภาษา Rust ในโปรเจ็กต์ช่วยให้คุณลดจำนวนข้อผิดพลาดในโค้ดได้โดยใช้เทคนิคการเขียนโปรแกรมที่ปลอดภัย และเพิ่มประสิทธิภาพในการระบุปัญหาเมื่อทำงานกับหน่วยความจำ Rust บังคับใช้ความปลอดภัยของหน่วยความจำ ณ เวลาคอมไพล์ผ่านการตรวจสอบการอ้างอิง ความเป็นเจ้าของอ็อบเจ็กต์ และการติดตามอายุการใช้งานของอ็อบเจ็กต์ (ขอบเขต) และโดยการประเมินความถูกต้องของการเข้าถึงหน่วยความจำ ณ รันไทม์ นอกจากนี้ Rust ยังให้การป้องกันจำนวนเต็มล้น กำหนดให้กำหนดค่าตัวแปรก่อนใช้งาน บังคับใช้แนวคิดของการอ้างอิงและตัวแปรที่ไม่เปลี่ยนรูปตามค่าเริ่มต้น ให้การพิมพ์แบบคงที่ที่แข็งแกร่งเพื่อลดข้อผิดพลาดเชิงตรรกะ และทำให้การจัดการค่าอินพุตง่ายขึ้น ขอบคุณการจับคู่รูปแบบ .
สำหรับการพัฒนาส่วนประกอบระดับต่ำ เช่น เคอร์เนล OS นั้น Rust ให้การสนับสนุนตัวชี้แบบดิบ การบรรจุโครงสร้าง ส่วนแทรกแบบอินไลน์ของแอสเซมเบลอร์ และการฝังไฟล์แอสเซมเบลอร์ ในการทำงานโดยไม่ต้องเชื่อมโยงกับไลบรารีมาตรฐาน มีแพ็คเกจลังแยกต่างหากสำหรับดำเนินการกับสตริง เวกเตอร์ และแฟล็กบิต ข้อดีอีกประการหนึ่งคือเครื่องมือในตัวสำหรับการประเมินคุณภาพโค้ด (linter, ตัววิเคราะห์สนิม) และสร้างการทดสอบหน่วยที่สามารถทำงานได้ไม่เพียงแต่บนฮาร์ดแวร์จริงเท่านั้น แต่ยังรวมถึงใน QEMU อีกด้วย
ที่มา: opennet.ru