Skip to content
Snippets Groups Projects

0.9.0 release notes

Merged Ron Williams requested to merge rw_van/website:release090 into master
Compare and Show latest version
2 files
+ 163
104
Compare changes
  • Side-by-side
  • Inline
Files
2
+ 163
104
+++
title = "Redox OS 0.9.0"
author = "Jeremy Soller and Ron Williams"
date = "2024-04-18"
author = "Ribbon, Ron Williams and Jeremy Soller"
date = "2024-09-9"
+++
(The computers image needs to be uploaded, like the previous release it should show the Jeremy computers running the current Redox version)
![Orbital in the 0.9.0 version](/img/screenshot/orbital-0.9.0.png)
![Programs running in Redox 0.9.0](/img/screenshot/programs1.png)
![Orbital in Redox 0.9.0](/img/screenshot/orbital-0.9.0.png)
## Overview
It's been 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 many improvements and cleanup.
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 a lot by their hard work that make this release possible.
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!
- Massive performance improvements
- Much improved process/thread lifecycle and signaling, thanks to funding from [NLnet](https://nlnet.nl/project/RedoxOS-Signals/)
- Massive performance improvements and stability
- Now featuring COSMIC Files, Editor and Terminal from the [COSMIC Desktop](https://system76.com/cosmic/)!
- Huge improvements to the portability of Linux/BSD programs
- Phase-One of the creation of a stable API
- USB Mouse and Keyboard support (with caveats)
- Userspace ABI improvements, towards the long-term goal of a stable ABI
- Improved paging and memory management
- Faster system calls
- Faster system calls and context switching
- Wide-ranging clean-up and debugging of the kernel, drivers and PCIe support
- Improved USB HID support
- Improved filesystem performance
- Our [porting strategy](https://www.redox-os.org/news/porting-strategy/) was explained
- Self-hosting improvements
## Donations and Funding
In the past 12 months, we have received moderate grants from [NLnet's NGI Zero Core Fund](https://nlnet.nl/core/)
and [Radworks](https://radworks.org/), 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](https://www.patreon.com/redox_os)
or [Donorbox](https://donorbox.org/redox-os),
or choose one of the other methods on our [Donate](https://redox-os.org/donate/) page.
You can also buy Redox merch (t-shirts, hoodies and mugs!) at our [Redox store](https://redox-os.creator-spring.com/).
If you know an organization or foundation that may be interested in supporting Redox, please contact us at [donate@redox-os.org](donate@redox-os.org)
## Key Improvements for Release 0.9.0
- VirtIO drivers for better performance in virtual machines
- Virtualized [TSC](https://en.wikipedia.org/wiki/Time_Stamp_Counter) gives a massive boost to context switching speed in virtual machines
- The [Unix path format](https://en.wikipedia.org/wiki/Path_(computing)#Unix_style) replaced the previous [URI format](https://en.wikipedia.org/wiki/Uniform_Resource_Identifier) used in our system interfaces,
improving compatibility with POSIX/Linux libraries and programs.
- Relibc (our C library implementation) is now almost 100% Rust and much more complete
- Improvements to the bootloader for more hardware compatibility
- Significant progress on the ARM64 (Aarch64) support, including partial support for Raspberry Pi 3B+
- Contain (Redox's sandbox driver) has been expanded and is available as a demo (`desktop-contain.toml`)
- The first HTTP web server was ported ([Simple HTTP Server](https://github.com/TheWaWaR/simple-http-server))
- Slint, Iced and winit GUI libraries support the Redox's display server (Orbital)
- Most COSMIC Desktop programs were ported
- GNU Nano and [Helix](https://helix-editor.com/) editors were ported
- [RustPython](https://rustpython.github.io/) is working
- New build system options and improvements
- Lots of new documentation, a complete book review and cleanup, almost 100% up-to-date information
- Lots of new documentation, lots of updates to reflect recent changes
- A [FAQ](https://www.redox-os.org/faq/) was added to the website
- A [developer FAQ](https://doc.redox-os.org/book/ch09-07-developer-faq.html) was added to the book
- The Redox software ports system was almost completely documented
- The Redox software ports (recipes) system was almost completely documented
- The [Libraries and APIs](https://doc.redox-os.org/book/ch09-06-libraries-apis.html) page documented our system APIs and libraries
- The [Performance](https://doc.redox-os.org/book/ch09-10-performance.html) page documented how to profile Redox to improve the performance
- Some sections of the website FAQ were copied to the book for better reading and easy to find information
- [Feature comparison](https://doc.redox-os.org/book/ch04-11-features.html) tables were added to the book
- The [References](https://doc.redox-os.org/book/ch09-08-references.html) page documents the best references to learn Rust, OS development and computer science
- Now the website say that we aim to be a complete Linux/BSD alternative
- Our [porting strategy](https://www.redox-os.org/news/porting-strategy/) was explained
## Stability and Performance Improvements
Jeremy Soller and 4lDO2 did massive improvements to stability and security, fixed many bugs, from easy to very hard.
Jeremy Soller and 4lDO2 have made massive 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:
- paging and memory management
- scheme deamon API encapsulation and refactoring
- process lifecycle and signal management (our NLnet project)
- context switching performance improvements
- implementing the "Stable ABI" strategy (phase I - kernel ABI versioning)
- and being a key resource for the Redox community
You can read about part of the 4lDO2 journey to improve the kernel on the following posts:
You can read about parts of 4lDO2's journey to improve the kernel in the following posts:
- [RSoC: on-demand paging](https://www.redox-os.org/news/kernel-8/)
- [RSoC: on-demand paging II](https://www.redox-os.org/news/kernel-9/)
@@ -60,19 +89,34 @@ You can read about part of the 4lDO2 journey to improve the kernel on the follow
Jeremy rarely write posts and prefer to contribute in silence and report the progress later in the Matrix community.
## 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:
- Improved boot correctness for UEFI
- Improvements and bug fixes for many PCI/PCIe drivers
- Removing all the old format paths and replacing them with the new format
- General code cleanup and update of drivers
Many thanks to bjorn3 and all our driver contributors!
## Software Updates
Our toolchains received some updates and currently our Rust, C and C++ toolchains use the latest stable versions or close to it, it's a great achievement compared to other OS projects that use very old toolchain versions (limiting the program compatibility)
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.
Beyond the toolchain updates, we also updated important cross-platform libraries used by most programs and some important programs.
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 focus on Rust programs as they are more easy to port, Ribbon quickly ported hundreds of emerging Rust programs in 2023.
We focus 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 partially-ported the classic and widely-used C and C++ programs and libraries, he focused to package the most used (and best) programs of the Linux/BSD world.
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.
@@ -85,52 +129,57 @@ This increased our software compatibility and fixed many programs, from Rust to
## Better ARM Support
uvnn cleaned and improved our ARM support a lot, we would like to thank his massive work in 2023.
We also would like to thank Ivan Tan to achieve the Redox support on the Raspberry Pi 3 B+ !
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 ARM hardware in the future.
Jeremy also improved the ARM support to the level where we can start the Orbital session on the QEMU emulation.
## Better PCI Express Support
We would like to thank bjorn3 for his excellent work to improve our PCI Express support.
## Better Driver Organization and Code Cleanup
bjorn3 cleaned our driver code, deduplicated some drivers and moved our driver code to category folders, like Linux and BSD.
## Better USB Support!
Jeremy and 4lDO2 improved our USB support to the level where most USB HID devices can work!
Jeremy and 4lDO2 improved our USB support to the level where most USB HID devices will work!
Mouse and keyboard support, game controllers and similar devices are now supported.
And special thanks to new contributor Tim Finnegan for key emergency improvements just before the release,
including hot-plugging support, port numbering fixes and USB 2 vs USB 3 protocol differences.
Like mouse, keyboards, game controllers and other things.
Note that many computers route their ports through an internal hub, so some ports (maybe all of them) may not work for you.
Hub support is next on the agenda, so hopefully we will support your computer soon, if we don't already!
## VirtIO Support
Anhad Singh from the [Aero](https://github.com/Andy-Python-Programmer/aero) project participated in our RSoC program from 2023 and implemented the VirtIO support on Redox.
He wrote some VirtIO drivers and improved the VirtIO GPU 2D acceleration to speed up our QEMU performance.
Anhad Singh from the [Aero OS](https://github.com/Andy-Python-Programmer/aero) project participated in our RSoC program from 2023 to write VirtIO drivers for Redox.
You can read about his work on the following posts:
- [RSoC: virtio drivers - 1](https://www.redox-os.org/news/rsoc-virtio-1/)
- [RSoC: virtio drivers - 2](https://www.redox-os.org/news/rsoc-virtio-2/)
## Build System Improvements
## Self-Hosting Improvements
We would like to thank Ron Williams, bjorn3, Jeremy and 4lDO2 for their massive improvements to our build system configuration and tooling.
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 take a huge leap forward.
Ron Williams and Jeremy implemented new commands to ease the life of developers, packagers and testers.
## First HTTP Web Server
We ported our first HTTP web server, [Simple HTTP Server](https://github.com/TheWaWaR/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.
bjorn3 simplified our filesystem configuration system, reducing duplication and our maintenance cost.
## 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 we covered many missing things in the website and book, removed most of the obsolete information and documented almost all build system commands.
Our documentation was improved massively thanks to Ron Williams and Ribbon. In 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 did a hard work 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](https://www.redox-os.org/news/documentation-improvements/) post and on the monthly updates.
@@ -152,7 +201,7 @@ You can read them on the following links:
## Software Showcase
We started a series of videos showing many programs running on Redox!
We created the first in (hopefully) a series of videos showing many programs running on Redox!
<iframe width="800" height="640" src="https://www.youtube.com/embed/s-gxAsBTPxA?si=EbIRLwIrnuiwfvYZ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
@@ -161,33 +210,39 @@ We started a series of videos showing many programs running on Redox!
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. Before Matrix you would need to wait the Mattermost approval of your account, but if the Mattermost email server went offline your account would never be approved, thus it was flooded with emails asking why their account was not approved, while Jeremy Soller didn't receive any emails.
In Matrix we fixed the account approval using the "Join Requests" room, where each new user request to join the Matrix space. The same applies for new GitLab accounts where each new contributor send its GitLab nickname on the "GitLab Approvals" room for approval.
In Matrix we fixed the account approval using the "Join Requests" room, where each new user request to join the Matrix space, the same for new GitLab accounts where each new contributor send its GitLab nickname for approval.
You can read more about it on [this](https://www.redox-os.org/news/community-announcements-1/) post.
You can read more about it on our [community announcements](https://www.redox-os.org/news/community-announcements-1/) post.
## Discord
A Discord server was a long demand of the community because it's more convenient for most people, we didn't use Discord as the official platform because it's not free and open-source.
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.
Ribbon took the task and solved the demand, the Discord messages are bridged to Matrix and the moderation system is the same of Matrix.
## The Redox OS Nonprofit
## Organization Improvements
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 brand.
We have board meetings every quarter, which are recorded, and our minutes and notes are available in the [Nonprofit repo](https://gitlab.redox-os.org/redox-os/nonprofit).
We also did many other organization improvements to save time in most tasks and satisfy more end-users and developers.
<!--
## Discussion
To contact us, join in our Matrix space on [this](https://www.redox-os.org/community/) page.
Here are some links to discussion about this news post:
- [Hacker News]()
- [Mastodon]()
- [Fosstodon @redox]()
- [Fosstodon @soller]()
- [Patreon]()
- [Phoronix]()
- [Reddit /r/redox]()
- [Reddit /r/rust]()
- [Redox OS Chat]()
- [X (previously known as Twitter)]()
- [X/Twitter @redox_os]()
- [X/Twitter @jeremy_soller]()
- [Hacker News]()
-->
## Images
@@ -196,11 +251,9 @@ It is recommended to try Redox OS in a virtual machine before trying on real har
the [supported hardware](https://www.redox-os.org/faq/#which-devices-does-redox-support) section for details on what
hardware to select for the best experience.
Remember to verify the images checksum with the `sha256sum` tool, use [this](https://static.redox-os.org/releases/0.9.0/x86_64/SHA256SUM) link for the x86_64 images.
## Compression
The images are compressed using the [Zstd](https://github.com/facebook/zstd) algorithm, to learn how to decompress them read [this](https://doc.redox-os.org/book/ch02-01-running-vm.html#decompression) section.
- Read [this](https://doc.redox-os.org/book/ch02-01-running-vm.html) page to learn how to run the Redox images in a virtual machine
- Read [this](https://doc.redox-os.org/book/ch02-02-real-hardware.html) page to learn how to run the Redox images on real hardware
- Read [this](https://doc.redox-os.org/book/ch02-03-installing.html) page to learn how to install Redox
### Demo
@@ -250,19 +303,19 @@ The most important changes are shown below.
### Kernel
- The memory performance was improved a lot by the introduction of a new buddy allocator (p2buddy)
- The CPU cost of many system calls was reduced, improving the overral performance
- The memory performance was improved a lot by the introduction of a buddy memory allocator (p2buddy)
- The CPU cost of many system calls was reduced a lot, improving the overral performance
- The kernel image became bootloader-agnostic
### RedoxFS
- The reading and writting performance was improved a lot by the introduction of the "records" concept, where RedoxFS use an optimal block size for the context switch
- The read/write performance was improved a lot by the introduction of the "records" concept, where RedoxFS use an optimal block size for the context switch
- The context switch roundtrips were reduced
- The copy-on-write reliability was improved with some bugs fixed
### System API
- All system components migrated from `redox_syscall` to `libredox` to have a stable ABI
- Virtually all system components migrated from `redox_syscall` to `libredox`, to allow an optimal unstable syscall ABI and eventually a stable userspace ABI
- The scheme path format is now converted at runtime (relibc/kernel) to avoid the patching of many libraries and programs, the Redox system interfaces are treated like the Linux target now
- New user-space schemes were introduced
- Many improvements to the scheme interface
@@ -272,7 +325,7 @@ The most important changes are shown below.
- A lot of new functions were added to relibc, improving the software compatibility
- Many bugs were fixed
- Many programs started to work
- More than 1600 programs and libraries were packaged (work-in-progress)
- More than 1700 programs and libraries were packaged (work-in-progress)
### Build System
@@ -280,7 +333,7 @@ The most important changes are shown below.
- New cleanup options
- New QEMU options
- New scripts
- A new filesystem configuration was added, it helped us to deduplicate files and improved the flexbility a lot
- A new filesystem configuration design was implemented, it helped us to deduplicate files and improved the flexbility a lot
- The `rust` submodule fetch was disabled, reducing the download time a lot
### Documentation
@@ -297,45 +350,51 @@ The most important changes are shown below.
### Community
- Our chat migrated from Mattermost to Matrix
- We migrated the chat platform from Mattermost to Matrix
- A moderation system was implemented
- A nonprofit organization was created to help our money management
- A nonprofit organization was created to help the donation management
## 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](https://gitlab.redox-os.org/redox-os/redox/-/blob/master/changelog.sh) script:
- [redox]
- [cookbook]
- [rust]
- [audiod]
- [bootloader]
- [bootstrap]
- [contain]
- [coreutils]
- [drivers]
- [escalated]
- [extrautils]
- [installer]
- [ion]
- [ipcd]
- [kernel]
- [netstack]
- [netutils]
- [orbital]
- [orbterm]
- [orbutils]
- [pkgutils]
- [ptyd]
- [redoxfs]
- [relibc]
- [resist]
- [smith]
- [userutils]
- [uutils]
- [init]
- [logd]
- [nulld]
- [ramfs]
- [randd]
- [zerod]
\ No newline at end of file
- [redox](https://gitlab.redox-os.org/redox-os/redox/-/compare/c8634bd...f2fc8e6)
- [cookbook](https://gitlab.redox-os.org/redox-os/cookbook/-/compare/3d72057d...29bf5784)
- [audiod](https://gitlab.redox-os.org/redox-os/audiod/-/compare/20474ef...f7c2426)
- [bootloader](https://gitlab.redox-os.org/redox-os/bootloader/-/compare/d398e37...c7588a1)
- [bootstrap](https://gitlab.redox-os.org/redox-os/bootstrap/-/compare/1effea3...94ac220)
- [ca-certificates](https://gitlab.redox-os.org/redox-os/ca-certificates/-/compare/b42b9c5...4df67f2)
- [contain](https://gitlab.redox-os.org/redox-os/contain/-/compare/42b381b...e6b8856)
- [coreutils](https://gitlab.redox-os.org/redox-os/coreutils/-/compare/690460d...b52a1b2)
- [cosmic-edit](https://github.com/pop-os/cosmic-edit) - new project
- [cosmic-files](https://github.com/pop-os/cosmic-files) - new project
- [cosmic-icons](https://github.com/pop-os/cosmic-icons) - new project
- [cosmic-term](https://github.com/pop-os/cosmic-term) - new project
- [curl](https://gitlab.redox-os.org/redox-os/curl/-/compare/8b9c5bef9...f50c28394)
- [drivers](https://gitlab.redox-os.org/redox-os/drivers/-/compare/fc4a69c...897866d)
- [escalated](https://gitlab.redox-os.org/redox-os/escalated/-/compare/7e02fe4...06fe299)
- [extrautils](https://gitlab.redox-os.org/redox-os/extrautils/-/compare/1f9cf9c...2218a14)
- [findutils](https://gitlab.redox-os.org/redox-os/findutils/-/compare/2b3a88f...116c044)
- [initfs](https://gitlab.redox-os.org/redox-os/redox-initfs/-/compare/89b8fb8...7dd9b2e)
- [installer](https://gitlab.redox-os.org/redox-os/installer/-/compare/f710fa7...087810a)
- [installer-gui](https://gitlab.redox-os.org/redox-os/installer-gui) - new project
- [ion](https://gitlab.redox-os.org/redox-os/ion/-/compare/b9c354eb...b1b9475f)
- [ipcd](https://gitlab.redox-os.org/redox-os/ipcd/-/compare/c930dfd...db2322c)
- [kernel](https://gitlab.redox-os.org/redox-os/kernel/-/compare/d298459...0c99e1b)
- [netstack](https://gitlab.redox-os.org/redox-os/netstack/-/compare/54d64d6...640e548)
- [netutils](https://gitlab.redox-os.org/redox-os/netutils/-/compare/34d1ec9...c78b13c)
- [orbdata](https://gitlab.redox-os.org/redox-os/orbdata/-/compare/1d6d330...3ca60ee)
- [orbital](https://gitlab.redox-os.org/redox-os/orbital/-/compare/e93c270...8b5497a)
- [orbutils](https://gitlab.redox-os.org/redox-os/orbutils/-/compare/b5aaf1e...4878e07)
- [pkgutils](https://gitlab.redox-os.org/redox-os/pkgutils/-/compare/8cc4d84...87e2dc8)
- [pop-icon-theme](https://github.com/pop-os/icon-theme/-/compare/ab3e9b1497...3126c6a3f6)
- [ptyd](https://gitlab.redox-os.org/redox-os/ptyd/-/compare/d1709e5...ab26604)
- [redoxfs](https://gitlab.redox-os.org/redox-os/redoxfs/-/compare/f601b2a...5c8f22b)
- [relibc](https://gitlab.redox-os.org/redox-os/relibc/-/compare/ee0193aa...7a86d101)
- [resist](https://gitlab.redox-os.org/redox-os/resist/-/compare/8d420dc...1a09fad)
- [userutils](https://gitlab.redox-os.org/redox-os/userutils/-/compare/0621709...7a96dab)
- [init](https://gitlab.redox-os.org/redox-os/init/-/compare/0c87d80...f5aaf7f)
- [logd](https://gitlab.redox-os.org/redox-os/logd/-/compare/734bb92...e0f930a)
- [ramfs](https://gitlab.redox-os.org/redox-os/ramfs/-/compare/d3fd7f2...f404d64)
- [randd](https://gitlab.redox-os.org/redox-os/randd/-/compare/934f130...1c88eea)
- [zerod](https://gitlab.redox-os.org/redox-os/zerod/-/compare/4b1b17c...286bd4a)
\ No newline at end of file
Loading