This post is just a recap of the system’s main features and current progress.
Core Kernel Features
Scheduler, memory management, program loading and system calls are all working well for now but will need some improvements over time.
Some advanced features like multithreading, priorities and CPU affinity have been implemented but not yet thoroughly pressure tested.
Architecture Support
The kernel & tools are highly specialised for RISC-V platforms, this importantly means that not a lot of “bloat” is needed to support legacy architectures.
Testing has mostly been done on the latest Chinese hardware designs, especially SpacemiT chips.
Filesystem
The filesystem received a lot of work early on and the current codebase supports three filesystem versions:
- xv6 style filesystem (“version 0”)
- Improved version (“version 1”)
- Extensible 64-bit filesystem (“version 2”)
The system does not have any support for reading or writing Linux/Mac/Windows disks at this stage and this probably won’t be a high priority compared to improving the native filesystem.
A freshly rewritten mkfs program is included so systems can be easily built based on this code.
The filesystem layout supports additional metadata but this hasn’t been exposed in APIs yet.
Networking
The networking support is relatively new and still needs some work.
The network stack is based on microps (not based on an in-house design and not based on LWIP like many other small operating systems). I’m really happy with this codebase but my port isn’t the fastest (drivers are a bit laggy) and it will need some extensions or a replacement over time (e.g. only supports legacy protocols, no IPv6).
Performance improvements are underway including a kqueue implementation suitable for server programs (as well as driver improvements), these will be addressed in upcoming releases. IPv6 support, wireless protocols and other things will be left for a release some time further in the future.
Graphics & GUI
This support is only just starting to come online and isn’t fully functional yet, but simple graphical apps will be supported in an upcoming releases.
Userland Infrastructure
Most basic command line functionality is already there.
My libc implementation is working well enough, and my compiler backend mostly works (but GCC is used for most builds again for now, just to focus on getting other things working). Getting the compiler to run properly on the new OS will take a little more backend work (finishing the linker etc.).
Other tools like a package manager have been written but haven’t been fully integrated.
Leave a Reply