Information om Kerla-projektet släpptes nyligen. Kerla utvecklas som en operativsystemkärna skriven i Rust. Koden distribueras under Apache 2.0- och MIT-licenserna. Projektet utvecklas av den japanska utvecklaren Seiya Nuta, känd för att ha skapat mikrokärnoperativsystemet Resea, skrivet i C.
Den nya kärnan syftar initialt till att säkerställa kompatibilitet med Linuxkärnan på ABI-nivå, vilket gör att omodifierade binärfiler som skapats för Linux kan köras i en Kerla-baserad miljö.
Om Keral
Kerla är en monolitisk operativsystemkärna byggd från grunden i Rust. I sitt nuvarande utvecklingsstadium kan Kerla bara köras på x86_64-system och implementerar grundläggande systemanrop som write, stat, mmap, pipe och poll. Den stöder signals, namnlösa pipes och kontextväxlar. Anrop som fork, wait4 och execve används för att styra processer. Det finns stöd för tty och pseudoterminaler (pty). Filsystemen initramfs (används för att montera rotfilsystemet), tmpfs och devfs stöds fortfarande.
En nätverksstack med stöd för TCP- och UDP-sockets, baserad på smoltcp-biblioteket, tillhandahålls också. Utvecklaren har förberett en startmiljö som fungerar i QEMU- eller Firecracker-VMs med hjälp av virtio-net-drivrutinen, som du redan kan ansluta till via SSH . Musl används som ett systembibliotek och BusyBox som ett användarverktyg . Ett Docker-baserat byggsystem har förberetts som låter dig skapa dina egna boot initramfs med hjälp av Kerla-kärnan.
Hittills har få detaljer lämnats om dess nya kärna, men det som drar mest uppmärksamhet till Kerlas funktioner är det faktum att den är skriven i Rust. Så har det några fördelar att skriva det i Rust jämfört med andra språk eller över befintlig kod? Många svarade ja på denna fråga och betonade fördelarna med minnessäkerhet som språket ger.
Det tillhandahålls också vid utvärdering av noggrannheten i minnesåtkomster vid körning. Dessutom anser Mozilla att Rust erbjuder skydd mot heltalsöverflöden , kräver obligatorisk initialisering av variabelvärden före användning, använder konceptet med referenser och oföränderliga variabler som standard, erbjuder stark statisk typning för att minimera logiska fel och förenklar inmatningsbehandling genom mönstermatchning.
Bland fördelarna lyfter vi fram de integrerade verktygen för att utvärdera kodkvalitet och skapa enhetstester som kan köras inte bara på riktig hårdvara utan även i QEMU. I grund och botten anser Mozilla att Rust är lättare att felsöka, eftersom kompilatorn kommer att avvisa fel. Testerna pekade dock på vissa nackdelar med Rust.
"Som med C ++ är det nästan omöjligt att skriva idiomatisk Rust utan att använda mallar, så det har uppsvällda binärer och långsamma kompileringstider. Alla dessa kompileringskontroller kostar också. Dessutom, om du skriver om något, förlorar du den gamla mogna kodbasen, och det finns inget sätt att du kan producera en kodbas av liknande kvalitet inom en rimlig tid; det är mycket bättre att utöka, snarare än att skriva om, programmet i Rust. Det är bättre att utöka programmet istället för att skriva om det i Rust, säger en mjukvaruingenjör.
Enligt dess skapare är det därför Linux-utvecklare, särskilt Linus Torvalds själv, avvisade idén att skriva om hela kärnan i Rust.
"Gör en del arbete för att skapa säkra länkar, skriv sedan tilläggskoden i Rust och du kan fortfarande njuta av den mogna koden. (Det är vad Linux gör, det finns försök att lägga till möjligheten att skriva en kärnmodul i Rust), ”tillade han. Linux-utvecklare har undersökt möjligheterna att skriva vissa nya kärnmoduler med Rust-språket i ungefär tre år. Detta gav upphov till projektet »Rust for Linux«.
Slutligen, om du är intresserad av att lära dig mer, kan du hitta detaljerna på följande länk.