By Ribbon and Ron Williams on
Redox OS is a complete Unix-like general-purpose microkernel-based operating system written in Rust. April was a very exciting month for Redox! Here’s all the latest news.
Donate to Redox
If you would like to support Redox, please consider donating or buying some merch!
Improved Boot on Real Hardware
This month, we have made system boot more resilient and better able to avoid getting stuck. Wildan Mubarok provided fixes and addressed some long-time regressions after the 0.9.0 release, allowing boot to continue even if certain important drivers exited or became blocked.
A summary of his changes are:
- Updated and rebased against the upstream Rust-OSDev
acpicrate to improve support for many computers, and VirtualBox - Fixed the boot stuck by driver exits
- Reduced the boot time of computers with multiple CPU cores
If you had problems booting Redox on real hardware, or in VirtualBox, please test the daily images again and report the status to us.
Better RISC-V Compatibility
AArch Angel improved the RISC-V real hardware compatibility by switching to the Sv39 MMU scheme and adding bootloader workarounds
tmux on Redox!
Wildan Mubarok successfully ported tmux, which allows terminal-agnostic multiplexing.

Accurate System Stats
Wildan Mubarok improved the accuracy of the CPU time stats reported to system monitors like htop.
- htop

Better Orbital Performance
Wildan Mubarok implemented the support for partial window pixel update (partial pixel blit) which improved performance by only redrawing window pixels that changed.
- Partial blit in NetSurf
The purple rectangles show the pixels being updated in the NetSurf window

Package Web Interface
Wildan Mubarok has enabled Cookbook Web Mode which creates a website with package information, similar to the package search pages in Linux distribution websites. This website functionality was implemented some time ago, and is now available to everyone.
You can access it in the following links:
Kernel Improvements
- (kernel) 4lDO2 fixed the performance profiler
- (kernel) Wildan Mubarok improved multi-threading stability
- (kernel) Wildan Mubarok implemented process shared memory stats
- (kernel) Wildan Mubarok improved vector allocation and removal performance
- (kernel) Wildan Mubarok improved
mmapperformance - (kernel) Wildan Mubarok fixed many potential deadlocks
- (kernel) Wildan Mubarok fixed many stability and performance regressions
- (kernel) Wildan Mubarok fixed a memory leak
- (kernel) Wildan Mubarok fixed the process CPU affinity reporting being blank, now it works
- (kernel) Wildan Mubarok added more ordered locks
- (kernel) bjorn3 enabled more compile-time code checking to prevent accumulated breakage of disabled features
- (kernel) bjorn3 greatly reduced code duplication
- (kernel) bjorn3 fixed some code warnings
- (kernel) bjorn3 did many code cleanups
- (kernel) Speedy_Lex applied many Clippy lints
Driver Improvements
- (drivers) Wildan Mubarok increased the IDE driver read timeout to fix COSMIC Terminal in the online demo async mode
- (drivers) bjorn3 updated the xHCI driver to load configuration files at runtime instead of compile-time to improve USB testing
- (drivers) bjorn3 did some code cleanups
System Improvements
- (sys) 4lDO2 created a service for
profiledto autostart when it’s installed to ease performance profiling - (sys) bjorn3 fixed
initdynamic linking - (sys) bjorn3 added a deadlock workaround in
initnsmgr - (sys) bjorn3 moved some filesystem configuration to the
baserepository to ease development - (sys) bjorn3 improved the Makefile to build drivers/initfs and changed the
baserecipe to use it - (sys) bjorn3 unified the
baseandbase-initfsrecipes, allowing theinitfsimage to be automatically updated in case of system component or driver changes (except RedoxFS, you need to use themake rp.redoxfs,basecommand) and simplifying configuration - (sys) bjorn3 replaced the Bochs video driver with the VESA driver to reduce code duplication
- (sys) bjorn3 created the
scheme-utilslibrary and tooling to help in the implementation of new schemes - (sys) Wildan Mubarok updated
ionto be dynamically linked - (sys) Wildan Mubarok merged the
installer-guirepository into theinstallerrepository
Relibc Improvements
- (libc) Landon Propes implemented the
faccessat,fchownat,unlinkat,symlinkat, andlinkatfunctions - (libc) Landon Propes exposed the
openat()function to user applications - (libc) Landon Propes added more
limitsheader constants - (libc) Landon Propes fixed the
printf()float alternate - (libc) Landon Propes fixed some conversions in
printf()if a precision is used - (libc) Landon Propes reduced code duplication
- (libc) Wildan Mubarok improved the Rust-based
mathheader - (libc) Wildan Mubarok fixed the
suseconds_tdefinition in Linux - (libc) Wildan Mubarok improved the testing script flexibility
- (libc) Wildan Mubarok added a test for
umask - (libc) Wildan Mubarok added kernel commit reporting in tests to ease regression investigation
- (libc) Wildan Mubarok implemented the
syscall()function to expand Linux testing, which most programs on Linux use - (libc) bjorn3 did some code cleanup
- (libc) Contributor Leibniz implemented the
alarm()function - (libc) Nicolás Antinori fixed the
wscanf()function regressions - (libc) Nicolás Antinori reduced code duplication in
scanfandwscanffunctions - (libc) auronandace continued improving POSIX compliance
- (libc) auronandace eliminated more C header file fragments by including definitions in the
cbindgenconfiguration file - (libc) auronandace reduced namespace pollution
- (libc) auronandace cleaned up lots of headers and code
- (libc) sourceturner did some code cleanups
- (libc) sourceturner applied some Clippy lints
- (libc) plimkilde improved the
seed48()function safety - (libc) plimkilde improved and fixed many documentation issues
Networking Improvements
- (net) Benton60 implemented
AF_UNSPEC - (net) bjorn3 moved the
dhcpddaemon fromnetutilsrepository tobase
Packaging Improvements
- (pkg) Wildan Mubarok updated
pkgutilsto be dynamically linked - (pkg) Migue Magic updated the package manager to update all packages when the
pkg updatecommand is used without arguments, before you needed to use the--alloption
Orbital Improvements
- (gui) Wildan Mubarok implemented the support for partial window update in the SDL 1.x and
softbufferlibraries to improve performance - (gui) Wildan Mubarok improved the maximized and fullscreen windows performance by around 3 times, by reducing the time needed to update windows (redraw)
- (gui) Wildan Mubarok implemented a damage border overlay to show what parts of the screen need to be redrawn, for performance analysis and debugging
Programs
- (app) Wildan Mubarok finished the migration to OpenSSL 3.x and
ncursesw - (app) Wildan Mubarok pinned the COSMIC application versions to workaround the regression where mouse clicks don’t work
- (app) Wildan Mubarok updated Neovim version from 0.11.5 to 0.13 (in development) and
tree-sitterto fix build issues - (app) Wildan Mubarok and auronandace fixed DCSS compilation
Build System Improvements
- (build) bjorn3 hard-coded the
initfsimage creation time to improve build reproducibility - (build) Wildan Mubarok implemented the
make i.recipeandmake installtargets for recipe package system-wide installation inside of Redox when the self-hosted mode is used - (build) Wildan Mubarok added the
*-unknown-linux-relibccompiler target to buildrelibcbinaries for Linux, to provide a comparison and improve testing - (build) Wildan Mubarok allowed the
QEMUenvironment variable to be changed in command line for the RHEL distribution that usesqemu-kvminstead ofqemu-systemas the QEMU executable name - (build) Wildan Mubarok did more fixes to self-hosted compilation
- (build) Wildan Mubarok fixed the
source.revrecipe data type updates not working because of Git caching - (build) Wildan Mubarok fixed the build cache status when using pre-built packages
- (build) Wildan Mubarok improved the
installererror reporting context - (build) Wildan Mubarok improved logging to show what part of the recipe triggered a rebuild (recipe configuration, dependencies or source files)
- (build) Wildan Mubarok simplified the Cookbook error reporting to ease diagnostics
- (build) Wildan Mubarok updated the Native Build dependencies to match the Podman Build
- (build) Wildan Mubarok enabled deterministic archives in GNU Binutils toolchain to increase build reproducibility
- (build) Wildan Mubarok added BLAKE3 hashes in
sysrootto allow partial/granular recipe library dependency updates if the dependency build system allow - (build) Wildan Mubarok greatly reduced toolchain storage usage by moving
relibc-installtosysroot - (build) Ribbon created the
sys-buildfilesystem configuration for automated self-hosted system compilation testing
CI Improvements
- (ci) Wildan Mubarok added kernel commit reporting in
relibcCI to ease regression investigation - (ci) Wildan Mubarok enabled multi-threading testing in
baseCI - (ci) Wildan Mubarok added a test for the
redoxer testcommand in the Redoxer CI to prevent image building breakage
Documentation Improvements
- (doc) Willem Grant submitted a hardware compatibility report for Framework Laptop 16 (status: Broken)
- (doc) Ribbon created the “Notes” section in
CONTRIBUTING.mdto quickly show important details and reduce unnecessary questions/problems - (doc) Ribbon created the Self-hosted Development page to explain how to configure QEMU for development inside of Redox (still WIP)
- (doc) Ribbon updated the “How to update initfs” section in How to update RedoxFS
- (doc) Ribbon documented the
general.repo_binary(repo_binary = true) filesystem boolean data type to only enable pre-built packages in one filesystem configuration - (doc) Ribbon documented the manual test suite execution and how to use the test images in the Testing page
- (doc) Ribbon documented the dependency condition where some Rust programs use CMake or Meson to find C/C++ libraries instead of
-syscrates
How To Test The Changes
To test the changes of this month download the server or desktop variants of the daily images.
Use the desktop variant for a graphical interface. If you prefer a terminal-style interface, or if the desktop variant doesn’t work, please try the server variant.
- If you want to test in a virtual machine use the “harddrive” images
- If you want to test on real hardware use the “livedisk” images
Read the following pages to learn how to use the images in a virtual machine or real hardware:
Sometimes the daily images are outdated and you need to build Redox from source. For instructions on how to do this, read the Building Redox page.
Join us on Matrix Chat
If you want to contribute, give feedback or just listen in to the conversation, join us on Matrix Chat.