Oplysninger om Kerla-projektet er for nylig blevet frigivet. Kerla udvikles som en operativsystemkerne skrevet i Rust. Koden distribueres under Apache 2.0- og MIT-licenserne. Projektet udvikles af den japanske udvikler Seiya Nuta, kendt for at have skabt Resea-mikrokerne-operativsystemet, skrevet i C.
Den nye kerne har i første omgang til formål at sikre kompatibilitet med Linux-kernen på ABI-niveau, hvilket tillader umodificerede binære filer oprettet til Linux at køre i et Kerla-baseret miljø.
Om Keral
Kerla er en monolitisk operativsystemkerne bygget fra bunden i Rust. På sit nuværende udviklingsstadium kan Kerla kun køre på x86_64-systemer og implementerer grundlæggende systemkald såsom write, stat, mmap, pipe og poll. Den understøtter signaler, unavngivne pipes og kontekstskiftere. Kald som fork, wait4 og execve bruges til at styre processer. Der er understøttelse af tty og pseudo-terminaler (pty). Filsystemerne initramfs (bruges til at montere rodfilsystemet), tmpfs og devfs understøttes stadig.
En netværksstak med understøttelse af TCP- og UDP-sockets, baseret på smoltcp-biblioteket, leveres også. Udvikleren har forberedt et boot-miljø, der fungerer i QEMU- eller Firecracker-VM'er ved hjælp af virtio-net-driveren, som du allerede kan oprette forbindelse til via SSH . Musl bruges som et systembibliotek, og BusyBox som et brugerværktøj . Et Docker-baseret byggesystem er blevet forberedt, der giver dig mulighed for at oprette dine egne boot-initramfs ved hjælp af Kerla-kernen.
Indtil videre er der kun givet få detaljer om dens nye kerne, men det, der trækker mest opmærksomhed på Kerlas funktioner, er det faktum, at den er skrevet i Rust. Så har det nogen fordele at skrive det i Rust i forhold til andre sprog eller i forhold til eksisterende kode? Mange svarede ja til dette spørgsmål og understregede de fordele ved hukommelsessikkerhed, som sproget giver.
Det gives også ved evaluering af nøjagtigheden af hukommelsesadgang under kørsel. Desuden mener Mozilla, at Rust tilbyder beskyttelse mod heltalsoverløb , kræver obligatorisk initialisering af variabelværdier før brug, anvender konceptet med referencer og uforanderlige variabler som standard, tilbyder stærk statisk typning for at minimere logiske fejl og forenkler inputbehandling gennem mønstermatchning.
Blandt fordelene fremhæver vi de integrerede værktøjer til evaluering af kodekvalitet og oprettelse af enhedstests, der kan køres ikke kun på rigtig hardware, men også i QEMU. Mozilla anser i bund og grund Rust for at være nemmere at fejlsøge, da compileren vil afvise fejl. Testene påpegede dog nogle ulemper ved Rust.
"Som med C ++ er det næsten umuligt at skrive idiomatisk Rust uden at bruge skabeloner, så det har oppustede binære filer og langsomme kompileringstider. Alle disse kompileringstidstjek har også en pris. Desuden, hvis du omskriver noget, mister du den gamle modne kodebase, og der er ingen måde, du kan producere en kodebase af lignende kvalitet inden for rimelig tid; det er meget bedre at udvide, i stedet for at omskrive, programmet i Rust. Det er bedre at udvide programmet i stedet for at omskrive det i Rust,” siger en softwareingeniør.
Ifølge dens skaber er det derfor, at Linux-udviklere, især Linus Torvalds selv, afviste ideen om at omskrive hele kernen i Rust.
"Gør noget arbejde for at skabe sikre links, og skriv derefter den ekstra kode i Rust, og du kan stadig nyde den modne kode. (Det er, hvad Linux gør, der er bestræbelser på at tilføje muligheden for at skrive et kernemodul i Rust), tilføjede han. Linux-udviklere har undersøgt mulighederne for at skrive visse nye kernemoduler ved hjælp af Rust-sproget i omkring tre år. Dette gav anledning til »Rust for Linux«-projektet.
Endelig, hvis du er interesseret i at lære mere, kan du finde detaljerne på følgende link.