Kerla: novo jedro, napisano v Rustu in združljivo z Linux ABI

Pred kratkim so bile objavljene informacije o projektu Kerla. Kerla se razvija kot jedro operacijskega sistema, napisano v Rustu. Koda je distribuirana pod licencama Apache 2.0 in MIT. Projekt razvija japonski razvijalec Seiya Nuta, znan po ustvarjanju operacijskega sistema z mikrojedrom Resea, napisanega v jeziku C.

Novo jedro si sprva prizadeva zagotoviti združljivost z jedrom Linuxa na ravni ABI, kar omogoča delovanje nespremenjenih binarnih datotek, ustvarjenih za Linux, v okolju, ki temelji na Kerli.

Glede Kerala

Kerla je monolitno jedro operacijskega sistema, zgrajeno iz nič v Rustu. V trenutni fazi razvoja lahko Kerla deluje le na sistemih x86_64 in izvaja osnovne sistemske klice, kot so write, stat, mmap, pipe in poll. Podpira signale, neimenovane cevi in ​​kontekstna stikala. Klici, kot so fork, wait4 in execve, se uporabljajo za nadzor procesov. Obstaja podpora za tty in psevdo-terminale (pty). Datotečni sistemi initramfs (ki se uporablja za priklop korenskega datotečnega sistema), tmpfs in devfs so še vedno podprti.

Na voljo je tudi omrežni sklad s podporo za vtičnice TCP in UDP, ki temelji na knjižnici smoltcp. Razvijalec je pripravil zagonsko okolje, ki deluje v virtualnih strojih QEMU ali Firecracker z uporabo gonilnika virtio-net, s katerim se lahko že povežete prek SSH . Musl se uporablja kot sistemska knjižnica, BusyBox pa kot uporabniški pripomoček . Pripravljen je bil sistem za gradnjo, ki temelji na Dockerju in omogoča ustvarjanje lastnih zagonskih initramf-ov z uporabo jedra Kerla.

Do zdaj je bilo o njegovem novem jedru posredovanih le nekaj podrobnosti, toda tisto, kar pritegne največ pozornosti na lastnosti Kerle, je dejstvo, da je napisano v Rustu. Ali ima torej pisanje v Rustu kakšne prednosti pred drugimi jeziki ali pred obstoječo kodo? Mnogi so na to vprašanje odgovorili pritrdilno, s poudarkom na prednostih varnosti pomnilnika, ki jih zagotavlja jezik.

Prav tako je na voljo pri ocenjevanju natančnosti dostopov do pomnilnika med izvajanjem. Poleg tega Mozilla meni, da Rust ponuja zaščito pred prekoračitvami celih števil , zahteva obvezno inicializacijo vrednosti spremenljivk pred uporabo, privzeto uporablja koncept referenc in nespremenljivih spremenljivk, ponuja močno statično tipiziranje za zmanjšanje logičnih napak in poenostavlja obdelavo vnosa z ujemanjem vzorcev.

Med prednostmi izpostavljamo integrirana orodja za ocenjevanje kakovosti kode in ustvarjanje enotnih testov, ki jih je mogoče izvajati ne le na resnični strojni opremi, temveč tudi v QEMU. Mozilla v bistvu meni, da je Rust lažji za odpravljanje napak, saj prevajalnik zavrne napake. Vendar pa so testi pokazali nekatere pomanjkljivosti Rusta.

»Tako kot pri C ++ je skoraj nemogoče napisati idiomatski Rust brez uporabe predlog, zato ima napihnjene binarne datoteke in počasen čas prevajanja. Vsa ta preverjanja v času prevajanja imajo tudi svoje stroške. Prav tako, če nekaj prepišete, izgubite staro zrelo kodno zbirko in nikakor ne morete izdelati kodne baze podobne kakovosti v razumnem času; veliko bolje je razširiti program v Rust kot pa ga prepisati. Bolje je razširiti program, kot pa ga prepisati v Rust, «pravi programski inženir.

Po besedah ​​njegovega ustvarjalca so zato razvijalci Linuxa, zlasti Linus Torvalds, zavrnili idejo o prepisovanju celotnega jedra v Rustu.

»Naredite nekaj dela, da ustvarite varne povezave, nato napišite dodatno kodo v Rustu in še vedno lahko uživate v tej zreli kodi. (To počne Linux, trudijo se dodati možnost pisanja modula jedra v Rustu), «je dodal. Razvijalci Linuxa že približno tri leta raziskujejo možnosti pisanja določenih novih modulov jedra z uporabo jezika Rust. Tako je nastal projekt »Rust for Linux«.

Nenazadnje, če vas zanima več informacij, lahko podrobnosti najdete na naslednji povezavi.


Dodaj kot prednostni vir v Googlu