Lumen - is a micro-kernel, written in Rust with support of AArch64 architecture and POSIX.
Below, you can see the roadmap:
| Stage | Languages | Progress | Time spent |
|---|---|---|---|
| CLI tools/scripts | Go/Lua | Under work | unknown |
| Bootloader | Rust | Done | 4 days |
| Kernel | Rust | Under work | unknown |
| Userland tools/SDK | Rust | Not ready | unknown |
Because C/C++ is painful for OS development right now.
Since mid-2025 (when I was 14), I was creating a lot of kernel prototypes, mostly, they were written in C/C++ and used ready boot loaders (like GRUB). However, I met several issues which were following me until I stopped writing C/C++ code for OS development:
-
GRUB. Using it just forces me to follow deprecated/old documentation. Another subtle detail is Multiboot2. You just need to know how much days I spent just to try to draw a simple rectangle to the framebuffer.
-
CMake or other build systems: Historically, C/C++ didn't really have unified standard build system, since WG21 focuses on other RAM-eating stuff. However, you may ask me: "Why do you even bother with it? Just go with CMake", but CMake is a hell for embedded systems. You would need a lot of tricks just to compile .EFI file, which usually needs
objcopy. Doing this just makes my head spin.The only savior from CMake was Makefile, however, it can become messy too, especially if you want scalable, modular architecture of your OS.
The first architecture I was toying with is x86. Since I didn't know UEFI existed (that time), which solves a lot of problems, I tried to manually write bootloader in Assembly. This was the time where I was supposed to give up, but after 6-7 months I could actually get bootloader working and loading kernel normally.
But despite this, I still left from x86 to AArch64, because AArch64 feels much cleaner and has less legacy constraints. Choosing AArch64 finally stopped me from worrying about real/protected/long mode stuff.