This Month in Redox - January 2025
By Ribbon and Ron Williams on
Redox OS is a Unix-like general-purpose microkernel-based operating system written in Rust. January 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!
Dynamic Linking
Thanks to Anhad Singh for his amazing work on Dynamic Linking! In this southern-hemisphere-Redox-Summer-of-Code project, Anhad has implemented dynamic linking as the default build method for many recipes, and all new porting can use dynamic linking with relatively little effort.
This is a huge step forward for Redox, because relibc can now become a stable ABI. And having a stable ABI is one of the prerequisites for Redox to reach “Release 1.0”.
Congratulations and many thanks Anhad!
LOVE on Redox
Jeremy Soller ported the LOVE game engine to Redox, to achieve this he did the following tasks:
- Ported the libmodplug, libtheora, and openal-soft libraries
- Fixed bugs and implemented some functions in relibc
You can see the Balatro game running on Redox below:
Toolchain Upgrade
The Rust compiler version was updated from 1.80 to 1.86 to fix many programs.
Kernel Improvements
- Anhad Singh fixed the chunk size of the
ITimer
scheme
System Improvements
- Ron Williams updated the
ptyd
daemon to use the latest version of theredox-scheme
library - Anhad Singh implemented dynamic linking support on the
liborbital
library
Relibc Improvements
- Anhad Singh improved the dynamic linker performance up to 1000%
- Anhad Singh fixed undefined behavior on the error handling
- Anhad Singh fixed the dynamic linker’s copy relocations
- Anhad Singh implemented
DT_RELR
on the dynamic linker - Anhad Singh fixed the dynamic linker multi-threading
- Bendeguz Pisch implemented the
sigsetjmp
function - Bendeguz Pisch implemented the
siglongjmp
function - Guillaume Gielly implemented the
langinfo.h
function group - Guillaume Gielly refactored the
strftime()
function to use thelanginfo
constants - Darley Barreto implemented the
tzset
function - Darley Barreto implemented timezone awareness
- Josh Megnauth implemented the support for arguments on shebangs
- Jeremy Soller implemented the
setlinebuf()
function - Ron Williams fixed the interrupt handling of the
nanosleep
andsleep
functions - Ron Williams fixed the
alarm
function to match the POSIX specification - plimkilde documented the dirent.h and arpa/inet.h function groups
- plimkilde implemented a way to test deprecated functions
Networking Improvements
- Guillaume Gielly fixed the DHCP server identifier
- Guillaume Gielly fixed the time calculation of the
ping
tool
Programs
- Jeremy Soller ported the LOVE game engine
- Jeremy Soller ported the libmodplug library
- Jeremy Soller ported the libtheora library
- Jeremy Soller ported the openal-soft library
- Josh Megnauth improved the portability of GNU programs
- Josh Megnauth simplified the GNU Make recipe configuration
- Josh Megnauth partially ported the Boost library
- Anhad Singh ported the patchelf tool
- Anhad Singh updated more recipes to support dynamic linking
Build System Improvements
- Anhad Singh implemented the support for dynamic linking on Cookbook
- Anhad Singh implemented a switch to enable/disable static linking
- Anhad Singh implemented a recipe data type (
shared-deps
) for dynamically linked libraries - Ron Williams fixed a toolchain desynchronization
- Daniel Axtens fixed the bootstrapping on Ubuntu 24.04
- Anhad Singh updated the Redoxer version
Documentation Improvements
- Ron Williams implemented a test for unused pages on the Redox book
- Ron Williams improved the chat documentation
- Ribbon improved the README of most system components to include guidance on how to contribute and do Redox development, to encourage people to read and follow the method in the Redox book
- Anhad Singh documented the recipe dynamic linking configuration
- Andrew Lygin fixed typos on the book
How To Test The Changes
To test the changes of this month download the server
or desktop
variants of the daily images.
(Use the server
variant for a terminal interface and the desktop
variant for a graphical interface, if the desktop
variant doesn’t work use 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.
Discussion
Here are some links to discussion about this news post: