Projekt Kerla razvija jedro operacijskega sistema, napisano v Rustu. Novo jedro je sprva osredotočeno na zagotavljanje združljivosti z jedrom. Linux na ravni ABI, kar bo omogočilo delovanje nespremenjenih izvedljivih datotek, prevedenih za Kerlo, v okolju, ki temelji na Kerli. Linux. Код распространяется под лицензиями Apache 2.0 и MIT. Проект развивает японский разработчик Сейя Нута (Seiya Nuta), известный созданием микроядерной операционной системы Resea, написанной на языке Си.
Na trenutni stopnji razvoja lahko Kerla deluje samo na sistemih x86_64 in izvaja osnovne sistemske klice, kot so pisanje, stat, mmap, cev in anketa, podpira signale, neimenovane cevi in kontekstna stikala. Za nadzor procesov so na voljo klici, kot so fork, wait4 in execve. Obstaja podpora za tty in psevdo-terminale (pty). Trenutno podprti datotečni sistemi so initramfs (uporablja se za namestitev korenskega datotečnega sistema), tmpfs in devfs. Zagotovljen je omrežni sklad s podporo za vtičnice TCP in UDP, implementiran na osnovi knjižnice smoltcp.
Razvijalec je pripravil zagonsko okolje, ki ga je mogoče zagnati v QEMU ali virtualni stroj Firecracker z gonilnikom virtio-net, s katerim se je zdaj mogoče povezati prek SSH. Kot sistemsko knjižnico uporablja musl, kot uporabniške pripomočke pa BusyBox.

Pripravljen je bil sistem gradnje, ki temelji na Dockerju in vam omogoča ustvarjanje lastnih zagonskih initramfov z jedrom Kerla. Ločeno se razvija programska lupina nsh, podobna ribi, in sklad GUI Kazari, ki temelji na protokolu Wayland.

Uporaba jezika Rust v projektu vam omogoča zmanjšanje števila napak v kodi z uporabo varnih tehnik programiranja in povečanjem učinkovitosti prepoznavanja težav pri delu s pomnilnikom. Rust uveljavlja varnost pomnilnika v času prevajanja s preverjanjem sklicevanj, lastništvom objekta in sledenjem življenjske dobe objekta (obseg) ter z ocenjevanjem pravilnosti dostopov do pomnilnika med izvajanjem. Poleg tega Rust zagotavlja zaščito pred celoštevilskimi prelivi, zahteva inicializacijo vrednosti spremenljivk pred uporabo, privzeto uporablja koncept nespremenljivih referenc in spremenljivk, ponuja močno statično tipkanje za zmanjšanje logičnih napak in poenostavlja ravnanje z vhodnimi vrednostmi zahvaljujoč ujemanju vzorcev.
Za razvoj komponent nizke ravni, kot je jedro operacijskega sistema, Rust zagotavlja podporo za neobdelane kazalce, strukturno pakiranje, inline vstavke asemblerja in vdelavo datotek asemblerja. Za delo, ne da bi bili vezani na standardno knjižnico, obstajajo ločeni paketi zabojev za izvajanje operacij z nizi, vektorji in bitnimi zastavicami. Druga prednost so vgrajena orodja za ocenjevanje kakovosti kode (linter, rust-analyzer) in ustvarjanje enotnih testov, ki jih je mogoče izvajati ne samo na pravi strojni opremi, ampak tudi v QEMU.
Vir: opennet.ru
