V rámci projektu Kerla se vyvíjí jádro operačního systému napsané v jazyce Rust. Nové jádro je původně zaměřeno na zajištění kompatibility s jádrem Linux na úrovni ABI, což umožní spouštění nemodifikovaných spustitelných souborů sestavených pro Linux v prostředí založeném na Kerla. Kód je distribuován pod licencemi Apache 2.0 a MIT. Projekt rozvíjí japonský vývojář Seiya Nuta, známý vytvářením mikrojádrového operačního systému Resea, napsaného v jazyce C.
V aktuální fázi vývoje může Kerla fungovat pouze na systémech s architekturou x86_64 a implementuje základní systémová volání, jako jsou write, stat, mmap, pipe a poll, podporuje signály, anonymní kanály a přepínání kontextu. Pro správu procesů jsou k dispozici volání, jako jsou fork, wait4 a execve. Existuje podpora pro tty a pseudo-terminály (pty). Z externích souborových systémů jsou prozatím podporovány initramfs (používaný pro montování kořenového FS), tmpfs a devfs. Poskytuje se síťový zásobník s podporou TCP a UDP soketů, implementovaný na základě knihovny smoltcp.
Vývojář připravil zaváděcí prostředí, které se dá spustit v QEMU nebo v virtuálním stroji Firecracker s ovladačem virtio-net, k němuž se již dá připojit přes SSH. Jako systémová knihovna se používá musl, a jako uživatelské utility — BusyBox.

Na základě Dockeru byla připravena systémová konstrukce, která umožňuje vytvářet vlastní zaváděcí initramfs s jádrem Kerla. Odděleně se vyvíjí programová báze podobná shellu fish, nsh, a GUI zásobník Kazari na základě protokolu Wayland.

Použití jazyka Rust v projektu umožňuje snížit počet chyb v kódu díky aplikaci technik bezpečného programování a zvýšení efektivity odhalování problémů při práci s pamětí. Bezpečná práce s pamětí je zajištěna v Rust během kompilace prostřednictvím kontroly odkazů, sledování vlastnictví objektů a zohlednění doby života objektů (rozsahu viditelnosti), stejně jako hodnocením správnosti přístupu k paměti během provádění kódu. Kromě toho Rust poskytuje prostředky na ochranu před přetečením celých čísel, požaduje povinnou inicializaci hodnot proměnných před použitím, aplikuje koncept neměnnosti (immutable) odkazů a proměnných ve výchozím nastavení a nabízí silnou statickou typizaci pro minimalizaci logických chyb, což usnadňuje zpracování vstupních hodnot díky prostředkům pro vzorové shody.
Pro vývoj nízkoúrovňových komponent, jako je jádro OS, Rust poskytuje podporu pro raw ukazatele, balení struktur, inline assemblerové vložky a vkládání souborů v assembleru. Pro práci bez vazby na standardní knihovnu existují samostatné crate balíčky pro provádění operací se řetězci, vektory a bitovými příznaky. Mezi výhody se také uvádějí integrované nástroje pro hodnocení kvality kódu (linter, rust-analyzer) a tvorbu unit testů, které lze spouštět nejen na skutečném hardwaru, ale i v QEMU.
Zdroj: opennet.ru
