V okviru projekta Kerla poteka razvoj jedra operacijskega sistema, napisane v programskem jeziku Rust. Novo jedro je sprva usmerjeno v zagotavljanje združljivosti z jedrom Linux na ravni ABI, kar bo omogočilo izvajanje nespremenjenih izvršnih datotek, zgrajenih za Linux, v okolju, zasnovanem na Kerla. Koda se distribuira pod licencama Apache 2.0 in MIT. Projekt razvija japonski razvijalec Seiya Nuta, znan po ustvarjanju mikro jedrnega operacijskega sistema Resea, napisanega v programskem jeziku C.
Trenutno lahko Kerla deluje samo na sistemih z arhitekturo x86_64 in izvaja osnovne sistemske klice, kot so write, stat, mmap, pipe in poll, podpira signale, anonimne cevi in preklapljanje kontekstov. Za upravljanje procesov so na voljo klici, kot so fork, wait4 in execve. Podprti so tty in pseudoterminali (pty). Od datotečnih sistemov so trenutno podprti initramfs (uporablja se za monteranje korenskega FS), tmpfs in devfs. Na voljo je omrežni sklad s podporo za TCP in UDP sokete, realizirani na osnovi knjižnice smoltcp.
Razvijalec je pripravil zagonsko okolje, ki se zažene v QEMU ali v virtualni napravi Firecracker s voznikom virtio-net, s katerim se je že mogoče povezati prek SSH. Kot sistemska knjižnica se uporablja musl, kot uporabniška orodja pa BusyBox.

Na osnovi Dockerja je bila pripravljena sistemska zbirka, ki omogoča oblikovanje lastnih zagonskih initramfs z jedrom Kerla. Ločeno se razvijata programska lupina nsh, podobna fish, in GUI sklad Kazari na osnovi protokola Wayland.

Uporaba jezika Rust v projektu omogoča zmanjšanje števila napak v kodi s pomočjo varnih programiranja tehnik in povečanja učinkovitosti pri odkrivanju težav z delovanjem pomnilnika. V Rust-u se varno delo s pomnilnikom zagotavlja med prevajanjem, in sicer z preverjanjem povezav, sledenjem lastništvu objektov ter obravnavanjem življenjske dobe objektov (območje vidnosti), prav tako pa z oceno pravilnosti dostopa do pomnilnika med izvajanjem kode. Poleg tega Rust nudi orodja za zaščito pred prenasičenjem celih števil, zahteva obvezno inicializacijo vrednosti spremenljivk pred uporabo, uporablja koncept nespremenljivosti (immutable) povezav in spremenljivk privzeto ter ponuja močno statično tipizacijo za minimizacijo logičnih napak ter poenostavlja obdelavo vhodnih vrednosti z orodji za ujemanje vzorcev.
Za razvoj nizkonivojskih komponent, kot je jedro operacijskega sistema, Rust nudi podporo za surove kazalce, pakiranje struktur, inline vstavke v asemblerju in vključevanje datotek v asemblerju. Za delo brez vezave na standardno knjižnico so na voljo ločeni crate-paketi za izvajanje operacij s vrsticami, vektorji in bitnimi zastavicami. Med prednostmi so tudi vgrajena orodja za ocenjevanje kakovosti kode (linter, rust-analyzer) in ustvarjanje enotnih testov, ki jih je mogoče izvajati ne le na resnični strojni opremi, ampak tudi v QEMU.
Izvor: opennet.ru
