Nedávno byly zveřejněny informace o projektu Kerla, který je vyvíjen jako jádro operačního systému napsané v jazyce Rust. Kód je distribuován pod licencemi Apache 2.0 a MIT. Projekt vyvíjí japonský vývojář Seiya Nuta, známý vytvořením mikrokernelu operačního systému Resea, napsaného v jazyce C.
Nové jádro se zaměřuje zpočátku zajistit kompatibilitu s linuxovým jádrem na úrovni ABI, což umožní běh neupravených binárních souborů vytvořených pro Linux v prostředí založeném na Kerla.
O Keralovi
Kerla je monolitické jádro operačního systému vytvořené od nuly v Rustu. V současné fázi vývoje Kerla lze spustit pouze na systémech s architekturou x86_64 a implementuje základní systémová volání jako write, stat, mmap, roura a poll, podporuje signály, nepojmenované roury a kontextové přepínače. Volání jako fork, wait4 a execve poskytují řízení procesů. Existuje podpora pro tty a pseudoterminály (pty). Mezi systémy souborů initramfs (používané k připojení kořenového FS) jsou stále podporovány tmpfs a devfs.
K dispozici je také síťový zásobník s podporou soketů TCP a UDP, Založeno na knihovně smoltcp. Vývojář připravil bootovací prostředí, které funguje v QEMU nebo Firecracker VM s ovladačem virtio-net, ke kterému se již můžete připojit přes SSH. Musl se používá jako systémová knihovna a BusyBox se používá jako uživatelská utilita. Na základě Dockeru byl připraven systém sestavení, který vám umožní vytvořit si vlastní boot initramfs s jádrem Kerla.
O jeho novém jádru bylo zatím poskytnuto jen málo podrobností, ale to, co nejvíce přitahuje pozornost k vlastnostem Kerly, je skutečnost, že je napsáno v Rustu. Má tedy psaní v Rustu nějaké výhody oproti jiným jazykům nebo oproti stávajícímu kódu? Mnozí na tuto otázku odpověděli ano a zdůraznili výhody zabezpečení paměti, které jazyk poskytuje.
Poskytuje se také při vyhodnocování přesnosti přístupů do paměti za běhu. A co víc, Mozilla věří, že Rust nabízí ochranu proti přetečení celých čísel, vyžaduje před použitím povinnou inicializaci hodnot proměnných, ve výchozím nastavení přijímá koncept referencí a neměnných proměnných, nabízí silné statické typování pro minimalizaci logických chyb a zjednodušuje zpracování vstupu pomocí párování vzorů.
Mezi výhody vyzdvihujeme integrované nástroje pro hodnocení kvality kódu a vytváření jednotkových testů, které lze spustit nejen na skutečném hardwaru, ale také na QEMU. Mozilla v zásadě považuje Rust za jednodušší na ladění, protože kompilátor odmítne chyby. Zátoky však ukázaly na některé nevýhody Rusta.
„Stejně jako u C ++ je téměř nemožné napsat idiomatický Rust bez použití šablon, takže má nabubřelé binární soubory a pomalé kompilace. Všechny tyto kontroly v době kompilace také něco stojí. Také, pokud něco přepíšete, ztratíte starou vyspělou kódovou základnu a neexistuje způsob, jak vytvořit kódovou základnu podobné kvality v rozumném množství času; je mnohem lepší rozšířit, než přepsat, program v Rustu. Je lepší program rozšířit, než jej přepisovat do Rustu, “říká softwarový inženýr.
Podle jeho tvůrce právě z tohoto důvodu vývojáři Linuxu zejména Linus Torvalds sám, odmítli myšlenku přepsat celé jádro do Rustu.
„Udělejte nějakou práci na vytvoření zabezpečených odkazů, pak napište další kód v Rustu a stále si můžete užívat tento vyzrálý kód. (To je to, co Linux dělá, existují snahy přidat možnost napsat modul jádra v Rustu), “dodal. Vývojáři Linuxu zkoumali možnosti psaní určitých nových modulů jádra pomocí jazyka Rust asi tři roky. Vznikl tak projekt »Rust for Linux«.
Nakonec, pokud máte zájem o tom vědět více, můžete si přečíst podrobnosti Na následujícím odkazu.