Redox OS 0.9.0

By Ron Williams, Ribbon and Jeremy Soller on

Overview

It’s been quite a while since we had our last release, but we have been heads-down working hard this whole time, and Release 0.9.0 is packed with new features, improvements, bug fixes and cleanup.

We would like to thank all maintainers and contributors whose hard work has made this release possible.

Here are just a few of the highlights!

Donations and Funding

In the past 12 months, we have received generous grants from NLnet’s NGI Zero Core Fund and Radworks, allowing us to support a community manager and a student developer.

We are seeking community donations to support one or more full-time developers. We need the help of generous donors like you! If you want to help support Redox development, you can make a donation to our Patreon or Donorbox, or choose one of the other methods on our Donate page. You can also buy Redox merch (t-shirts, hoodies and mugs!) at our Redox store.

If you know an organization or foundation that may be interested in supporting Redox, please contact us on the email: donate@redox-os.org

Overview Video

If you want to avoid the setup work of running Redox on real hardware or in a Virtual Machine, have a look at our Software Showcase 1, where we show off programs running on Redox.

Running Redox

It is recommended to try Redox OS in a virtual machine before trying on real hardware. See the supported hardware section for details on what hardware to select for the best experience.

(Currently the VirtualBox VM is not working due to a bug)

Demo

A 1536 MiB image containing the Orbital desktop environment as well as pre-installed demonstration programs.

The demo image includes these additional packages:

Desktop

A 512 MiB image containing the Orbital desktop environment and some programs for common tasks. Use this if you want to download a smaller image.

Server

A 512 MiB image containing only the command-line environment. Use this if the desktop image is not working well for you.

Key Improvements for Release 0.9.0

Stability and Performance Improvements

Jeremy Soller and 4lDO2 have made huge improvements to stability and security, fixed many bugs, from easy to very hard, and added several new crates and components to encapsulate common elements.

We would like to thank 4lDO2 a lot for his massive work to improve the kernel and user-space daemons. Some of his work includes:

You can read about parts of 4lDO2’s journey to improve the kernel in the following posts:

Drivers and Boot

Jeremy, 4lDO2 and bjorn3 all worked on improving drivers and boot, and several other people made important contributions. Some of bjorn3’s contributions include:

Many thanks to bjorn3 and all our driver contributors!

Relibc Improvements

Relibc is the Redox C Standard Library, an alternative to the POSIX libc, glibc and musl. Relibc is written in Rust, and provides standard C and POSIX APIs, as well as many libc utility functions. It was originally envisioned to be an alternative to libc for both Linux and Redox. Increasingly, it has been the home for many Redox system services, including such things as fork, exec, pthred, and signal handling, as we try to move functionality out of the kernel while still supporting POSIX APIs. Many of the services have an underlying kernel or daemon scheme that implements part of the functionality, but the scheme may have little of the service’s complexity.

Relibc is also now key to our “stable ABI” strategy. The plan is for files to dynamically link against Relibc, which will provide a stable ABI for the dynamic linker. New POSIX functions will be added to Relibc, but none will be removed. That will leave us free to change the implementation of the services as Redox evolves, but still be able to run binaries compiled for older Redox versions.

4lDO2 has started the first phase of creating the stable ABI, creating a consistent internal API for current kernel services. He has also started to refactor relibc to separate services from APIs, and to make it easier to provide a non-POSIX API for system services in the future. Not to mention his extensive work on the NLnet-funded Signals and Process Lifecycle project, including moving signal handling into Relibc.

And thank you to all our other Relibc contributors, who have implemented many libc functions, tremendously helping our effort to port Linux/BSD software. Special thanks to Darley Barreto, who has worked hard to remove any remaining C code from libc, partitioning out libm (which is still largely in C) and replacing our malloc implementation with dlmalloc-rs.

Better ARM64 Support

The contributor uvnn cleaned and improved our ARM64 support a lot, we would like to thank his massive work in 2023. Ivan Tan got Redox to boot on the Raspberry Pi 3 B+, and helped us improve the build tools to support multiple Raspberry Pi devices and other ARM platforms. ARM is a different challenge than x86_64, because there is little standardization of hardware platforms. We hope to get Redox running on more ARM64 hardware in the future.

Jeremy also improved the ARM support to the level where we can start the Orbital session on the QEMU emulation.

A Note about USB Support

USB support is under heavy development and is a key feature for us, but it did not quite make the cut for this release. We hope to have an update for USB HID in the near future, which will provide support for USB mouse and keyboard, as well as game controllers. This will be followed by USB hub support, which is essential, as many motherboards route some or all USB ports through an internal hub. Then we will start work on USB storage.

Thanks to Jeremy and 4lDO2 for their work on this, and special thanks to new contributor Tim Finnegan for his emergency work to try to squeeze this in under the wire.

Watch for News about USB!

VirtIO Support

Anhad Singh from the Aero OS project participated in our RSoC program from 2023 to write VirtIO drivers for Redox.

You can read about his work on the following posts:

Self-Hosting Improvements

The NLnet-funded Signals and Process Lifecycle work has had the key side-effect of improving the operation of many software tools. The Rust and GCC toolchains are able to build basic programs, but with some limitations. Self-hosting the build is high on our agenda, and these improvements have helped us take a huge leap forward.

Software Updates

Our toolchains received some updates and currently our Rust, C and C++ toolchains are all recent versions, which significantly improves compatibility when porting other Linux/POSIX and Rust software.

We also updated important cross-platform libraries and improved the build process for programs that depend on those libraries, greatly simplifying the job of porting applications.

Rust-first Program Porting!

We have been focusing our initial porting efforts on Rust programs as they are easier to port. Ribbon created WIP ports for hundreds of emerging Rust programs in 2023, and many are working with no modification.

C/C++ Programs

Ribbon also created WIP ports for classic and widely-used C/C++ programs and libraries, he focused to package the most used (and best) programs of the Linux/BSD world.

Currently there are around 1,700 work-in-progress software ports, we need to write cross-compilation scripts and port/update some libraries to make them work.

First HTTP Web Server

We ported our first HTTP web server, Simple HTTP Server, and served a website from Redox. Thanks very much to contributor bpisch for his work on porting many difficult programs, and for this one in particular.

Notable Programs

Debugging Improvements

The process to debug the recipes of Rust programs was implemented and the debugging documentation was improved. It’s possible to enable the Rust debug symbols and get the backtrace from the build system.

Build System Improvements

We would like to thank Ron Williams, bjorn3, Jeremy and 4lDO2 for their massive improvements to our build system configuration and tooling. Ron Williams and Jeremy implemented new commands to ease the life of developers, packagers and testers. bjorn3 simplified our filesystem configuration system, reducing duplication and maintenance effort. 4lDO2 improved the performance of our recipe verification and image building process.

Documentation

Our documentation was improved massively thanks to Ron Williams and Ribbon. In 2023-2024 we covered many missing things in the website and book, removed most of the obsolete information and documented almost all build system commands.

Ron Williams and Ribbon worked hard to make our website and book extremely rich in information for end-users, Rust programming newbies and veterans, and operating system development newbies and veterans. Many other contributors offered help with corrections and clarity for both the book and the website. We are glad to say that our website and book answer most of the end-user and developer questions about Redox.

You can read about the Ribbon’s documentation adventure on this post and on the monthly updates.

This Month in Redox

We started monthly updates in 2024 to improve our status report for the community and bring more excitement to Redox, these posts offer more details about the changes present on this post.

You can read them on the following links:

Matrix

In 2023 we migrated from Mattermost to Matrix to fix some management problems, this big change helped us to improve many aspects of our community interaction.

The most important thing that Matrix fixed was the account creation approval for the chat and GitLab. In Matrix we are able to quickly do account approval using the “Join Requests” room, where each new user needs to request an invite to the Matrix space. The same applies for new GitLab accounts where each new contributor sends their GitLab nickname on the “GitLab Approvals” room for approval. This lets us minimize the number of spam accounts while still allowing everyone who wants to contribute to join easily.

You can read more about it on our community announcements post.

If you had problems to create an account on Mattermost in the past please try again in our Matrix chat.

Discord

A Discord server has been an important request from the community because it’s more convenient for many members. We chose not to use Discord as the main chat platform, because it’s not free and open-source.

Ribbon took the task and created the official Discord server. The Discord messages are bridged to Matrix and the moderation system is the same as for Matrix.

The Redox OS Nonprofit

This is our first release since the creation of the Redox Nonprofit! The purpose of the Nonprofit is to help raise and manage funds for Redox development, to support the community, and to support the Redox OS name. We have board meetings every quarter, which are recorded, and our minutes and notes are available in the Nonprofit repo.

Changes

There have been quite a lot of changes since 0.8.0. We have manually enumerated what we think is important in this list. Links to exhaustive source-level change details can be found in the Changelog section.

In Depth

The most important changes are shown below.

Kernel

RedoxFS

System API

Networking

Orbital

Ion Shell

Programs

Cookbook

Build System

Documentation

Community

Discussion

Here are some links to discussion about this news post:

Changelog

As many changes happened it’s not possible to write everything on this post, this section contains all commits since the 0.8.0 version generated by the changelog script: