Në kuadër të projektit Kerla po zhvillohet bërthama e një sistemi operativ të shkruar në gjuhën Rust. Bërthama e re është fillimisht e orientuar për të siguruar pajtueshmëri me bërthamën Linux në nivelin ABI, gjë që do të lejojë ekzekutimin e skedarëve të paprekur të ndërtuar për Linux në një mjedis të bazuar në Kerla. Kodi shpërndahet nën licencat Apache 2.0 dhe MIT. Projekti është zhvilluar nga zhvilluesi japonez Seiya Nuta, i njohur për krijimin e sistemit operativ mikro-bërthamë Resea, i shkruar në gjuhën C.
Në këtë fazë të zhvillimit, Kerla mund të funksionojë vetëm në sisteme me arkitekturë x86_64 dhe implementon thirrjet bazë të sistemit, si write, stat, mmap, pipe dhe poll, mbështet sinjalet, kanalet e paemërtuara dhe kalimet e kontekstit. Për menaxhimin e proceseve ofrohen thirrje si fork, wait4 dhe execve. Ka mbështetje për tty dhe pseudo-terminalet (pty). Aktualisht, sistemet e skedarëve mbështesin initramfs (përdoret për montimin e skedarit korrespondues), tmpfs dhe devfs. Ofrohet një rrethinë rrjeti me mbështetje për socket-at TCP dhe UDP, e implementuar mbi bazën e bibliotekës smoltcp.
Zhvilluesi ka përgatitur një mjedis ngarkimi që mund të ekzekutohet në QEMU ose në makinën virtuale Firecracker me driverin virtio-net, me të cilin tashmë mund të lidheni përmes SSH. Si bibliotekë sistemore përdoret musl, ndërsa si utilitarë përdoruesish është BusyBox.

Me bazë Docker, është përgatitur një sistem ndërtimi që lejon krijimin e initramfs-ve të veta me bërthamë Kerla. Njëkohësisht, është zhvilluar një shell e ngjashme me fish, e quajtur nsh, dhe një stack GUI Kazari mbi protokollin Wayland.

Përdorimi i gjuhës Rust në projekt ndihmon në reduktimin e numrit të gabimeve në kod duke aplikuar teknika sigurie dhe rrit efikasitetin e identifikimit të problemeve gjatë punës me memorien. Siguria në punën me memorien sigurohet në Rust gjatë kompaktimit përmes verifikimit të referencave, ndjekjes së pronësisë së objekteve dhe menaxhimit të kohëzgjatjes së objekteve (zona e dukshmërisë), si dhe përmes vlerësimit të saktësisë së qasjes në memorie gjatë ekzekutimit të kodit. Për më tepër, Rust ofron mjete për mbrojtje nga mbushjet e numrave të plotë, kërkon inisialisht obligative të vlerave të variablave para përdorimit, aplikon konceptin e paprekshmërisë (immutable) të referencave dhe variablave si parazgjedhje, ofron një tipizim të fortë statik për të minimizuar gabimet logjike dhe e lehtëson trajtimin e vlerave hyrëse përmes mjeteve të përputhjes me modelin.
Për zhvillimin e komponentëve të nivelit të ulët, si bërthama e OS, Rust ofron mbështetje për treguesit raw, paketimin e strukturave, inserteve inline në assembler, dhe integrimin e skedarëve në assembler. Për të punuar pa u lidhur me bibliotekën standarde, ka paketat e veçanta crate për operacione me vargje, vektorë dhe flamuj bitësh. Një avantazh tjetër janë mjetet e integruara për vlerësimin e cilësisë së kodit (linter, rust-analyzer) dhe për krijimin e testeve unitare, të cilat mund të ekzekutohen jo vetëm në pajisje reale, por edhe në QEMU.
Burimi: opennet.ru
