V rámci projektu Kerla prebieha vývoj jadra operačného systému, napísaného v programovacom jazyku Rust. Nové jadro je od začiatku zamerané na zabezpečenie kompatibility s jadrom Linux na úrovni ABI, čo umožní spúšťanie nemodifikovaných spustiteľných súborov, zostavených pre Linux, v prostredí založenom na Kerla. Kód je distribuovaný pod licenciami Apache 2.0 a MIT. Projekt rozvíja japonský vývojár Seiya Nuta, známy vytvorením mikrojadrovej operačného systému Resea, napísaného v jazyku C.
V súčasnej fáze vývoja Kerla môže pracovať iba na systémoch s architektúrou x86_64 a implementuje základné systémové volania, ako write, stat, mmap, pipe a poll, podporuje signály, anonymné kanály a prechody kontextu. Na správu procesov sú k dispozícii také volania, ako fork, wait4 a execve. Existuje podpora pre tty a pseudoterminály (pty). Z aktuálnych súborových systémov sú zatiaľ podporované initramfs (používaný na montovanie koreňového FS), tmpfs a devfs. Poskytuje sa sieťový zásobník s podporou TCP a UDP soketov, implementovaný na báze knižnice smoltcp.
Vývojár pripravil zavádzacie prostredie, spúšťané v QEMU alebo v virtuálnom stroji Firecracker s ovládačom virtio-net, ku ktorému sa už dá pripojiť cez SSH. Ako systémová knižnica sa používa musl, a ako používateľské nástroje — BusyBox.

Na báze Docker bola pripravená systémová zostava, umožňujúca vytvárať vlastné zavádzacie initramfs s jadrom Kerla. Samostatne sa rozvíja podobná shell ako fish nazvaná nsh a GUI-stack Kazari na báze protokolu Wayland.

Použitie jazyka Rust v projekte umožňuje znížiť počet chýb v kóde vďaka použitiu metód bezpečného programovania a zvýšeniu efektivity odhaľovania problémov pri práci s pamäťou. Bezpečné zaobchádzanie s pamäťou je v Rust zabezpečené počas kompilácie prostredníctvom kontroly referencií, sledovania vlastníctva objektov a zohľadňovania času existencie objektov (oblastí platnosti), ako aj prostredníctvom hodnotenia správnosti prístupu k pamäti počas vykonávania kódu. Okrem toho Rust poskytuje prostriedky na ochranu pred pretečením celých čísel, vyžaduje povinnú inicializáciu hodnôt premenných pred ich použitím, aplikuje koncept nemennosti (immutable) referencií a premenných ako predvolené, ponúka silnú statickú typizáciu na minimalizáciu logických chýb a zjednodušuje spracovanie vstupných hodnôt vďaka prostriedkom na porovnávanie s predlohou.
Na vývoj nízkoúrovňových komponentov, ako je jadro operačného systému, Rust poskytuje podporu raw-pointerov, balenia štruktúr, inline assemblerových vložení a vkladania súborov v assembleri. Na prácu bez väzby na štandardnú knižnicu sú dostupné samostatné crate-podklady na vykonávanie operácií so reťazcami, vektormi a bitovými prápormi. Medzi výhody patrí aj zabudované nástroje na hodnotenie kvality kódu (linter, rust-analyzer) a tvorbu jednotkových testov, ktoré je možné spúšťať nielen na reálnom hardvéri, ale aj v QEMU.
Zdroj: opennet.ru
