Skip to content
Snippets Groups Projects

Add the June 2024 report

Merged Ribbon requested to merge june-report into master
@@ -4,7 +4,7 @@ author = "Ribbon and Ron Williams"
date = "2024-06-30"
+++
May was a very exciting month for Redox! Here's all the latest news.
June was a very exciting month for Redox! Here's all the latest news.
## Donate to Redox
@@ -14,13 +14,52 @@ If you would like to support Redox, please consider donating or buying some merc
- [Patreon](https://www.patreon.com/redox_os)
- [Merch](https://redox-os.creator-spring.com/)
## Funding!
### NLnet NGI Zero Core
We are very excited to announce that the [NGI Zero Core](https://nlnet.nl/thema/NGIZeroCore.html) program
from the [NLnet Foundation](https://nlnet.nl/)
will be funding our project [Redox OS Unix-style Signals](https://nlnet.nl/project/RedoxOS-Signals/).
Redox currently has a basic implementation of Signals, but this project will allow us to move most of signals code
out of the kernel into user-space, and bring us much closer to POSIX compliance.
The project also includes a Process Manager Daemon in user-space,
to manage the session/process group/process/thread hierarchy, especially with respect to signals,
and to help support [sigqueue](https://pubs.opengroup.org/onlinepubs/009695399/functions/sigqueue.html).
4lDO2 will do the heavy lifting on this project,
with the Redox team creating a test suite for the work and acting as backup for bug fixes.
### Radworks
[Radworks](https://radworks.org/) has very generously provided a donation of $13,000 USD in USDC and Rad tokens
using the [Drips Network](https://drips.network/), to support Redox's [termion](https://gitlab.redox-os.org/redox-os/termion) library.
The [Radicle](https://radicle.xyz/) project is funded by Radworks.
"Radicle is a sovereign peer-to-peer network for code collaboration, built on top of Git."
The `termion` library, a Redox sub-project, is a terminal manipulation library used for writing text-based user interfaces (TUI),
written in Rust, and supporting Linux, Redox, BSD, and Mac OS X.
`termion` is a dependency of Radicle.
## New Orbital Visual
We changed our default wallpaper, title bar and panel bar colors to make the user experience more pleasant, you can see it below:
![New Orbital Visual](/static/img/screenshot/orbital-visual.png)
(The wallpaper is the "Tarantula Nebula" from NASA, also available on the COSMIC desktop)
The wallpaper is the [Tarantula Nebula](https://webbtelescope.org/contents/media/images/2022/041/01GA76MYFN0FMKNRHGCAGGYCVQ) from NASA, also available on the COSMIC desktop.
## Software Showcase 1
We have uploaded our first software showcase to our [YouTube channel](https://www.youtube.com/@RedoxOS)!
This is just a small part of the software that works on Redox.
We will be uploading more showcases in the near future.
Like, Subscribe, and Comment to help bring more attention to 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>
## Performance Improvements
@@ -30,21 +69,25 @@ He also applied this improvement on the SATA, NVMe, USB SCSI and VirtIO Block dr
## Relibc Improvements
The pread() and pwrite() system calls were implemented on relibc.
The `pread()` and `pwrite()` functions are now implemented using the proper syscalls (rather than seek-based emulation) in relibc.
This is part of an effort to improve the handling of file offsets across Redox.
## Scheme Improvements
4lDO2 updated the bootstrap and initfs to use the new scheme interface through the `redox-scheme` library.
4lDO2 improved the `redox-scheme` crate and the scheme protocol to provide a cleaner API for drivers and daemons.
He also improved the scheme protocol to remove the need for ugly workarounds.
He updated `bootstrap` and `initfs` to use the new scheme interface.
## User-Space Debugging From GDB
Thanks to bjorn3 the GNU Debugger can read the Redox user-space now (where most of the system components run).
Thanks to bjorn3, the GNU Debugger, running outside the VM,
can read the Redox user-space tasks when the `gdbserver` is not available.
This is helpful if you are debugging, for example, drivers during startup, but is not for general use.
## USB Improvements
bjorn3 added a 2ms sleep on the poll lopp of the xHCI driver to reduce the CPU usage a lot.
bjorn3 added a 2ms sleep on the poll loop of the xHCI driver to reduce the CPU usage a lot,
while we await the implementation of xHCI interrupts.
Quoting his MR description:
@@ -59,53 +102,90 @@ mice don't support polling at 500Hz anyway."
## PCI Improvements and Cleanup
bjorn3 should explain his improvements here.
He also cleaned up more PCI code as usual on his series of driver cleanups and simplifications.
Continuing his work on driver cleanup and improvement,
bjorn3 did a wide-ranging cleanup of the PCI/PCIe driver, refactoring, removing unneeded code,
and generally improving the clarity and maintainability of the code.
## VirtIO Improvements
bjorn3 implemented the VirtIO modern transport on x86!
He also removed the legacy transport which is rarely used.
bjorn3 implemented the Modern transport for our x86 VirtIO drivers.
The original implementation was using the Legacy transport,
which is not commonly used.
## Recoverable Components
4lDO2 adapted the `lived` system component to be stateless!
4lDO2 adapted the `lived` system component to use the new offset-based read/write scheme protocol!
On microkernel-basded operating systems most system components are restarted in case of a crash without a system reboot (on-the-fly), a stateless daemon is a requirement to restart system components in case of a crash.
On microkernel-based operating systems, it is desirable to have most system components able to be restarted in case of a crash,
without needing a system reboot.
Using the offset-based read/write protocol allows us to remove file position tracking from the driver,
bringing us one step closer to having the ability to restart drivers.
## Programs
Ribbon added an ABI separation on the LLVM recipe, it protect programs with a dependency on LLVM from breakage when the LLVM version is updated.
Ribbon added an ABI separation on the LLVM recipe, to protect programs with a dependency on LLVM from breakage when the LLVM version is updated.
(Like most Linux distributions does)
He also fixed many recipe scripts, many Rust programs built successfully for the first time!
Many Rust libraries were fixed with the recent changes on Redox, Ribbon is checking the TODOs of each program.
Many WIP software ports were missing cross-compilation scripts for CMake, Ribbon fixed this.
These CMake scripts may be incomplete but it saves a lot of time from packagers trying to complete our cross-compilation scripts.
## Build System Improvements
The grnmeira contributor discovered that our "server-minimal" variant lacked network support and created confusion about the name.
Contributor grnmeira discovered that our "server-minimal" variant lacked network support and created confusion about the name.
Based on the 4lDO2 suggestion for the new variant name, Ribbon renamed the "server-minimal" configuration to "minimal".
Based on 4lDO2's suggestion for the new variant name, Ribbon renamed the "server-minimal" configuration to "minimal".
He also created the "minimal-net" configuration for network support.
Now the most minimal OS image is called "minimal"
(The system still need more improvements to reduce the CPU and memory usage)
We have not yet attempted to make the "minimal" system suitable for a truly minimal computer,
but we have several ideas for future improvement.
Ribbon added the "Development Tools" package group from Fedora to our setup script `bootstrap.sh`, to avoid missing any development packages and reduce the number of items to be installed for the Fedora target in the script.
## USB Support Status
Ribbon added the "Development Tools" package group from Fedora to avoid any possible development package missing and reduce the number of packages on the installation command for the Fedora target on the build system bootstrap script.
When we announced the support for USB input devices on the [April report](https://www.redox-os.org/news/this-month-240430/) we neglected to update the documentation to change the USB status.
We recently added support for USB input devices, and this support is being improved,
but it is to be expected that some devices are not working.
Our nightly images have been frozen since May 30, so if you tested after that date you would not have received the latest improvements for USB.
If you want to test the latest USB improvements we recommend that you download the build system and build the Redox image, you can learn how to that on [this](https://doc.redox-os.org/book/ch02-05-building-redox.html) page.
## Documentation
Ribbon improved the [binary packages explanation](https://doc.redox-os.org/book/ch02-07-configuration-settings.html#binary-packages) and documented the [environment leakage](https://doc.redox-os.org/book/ch08-05-troubleshooting.html#environment-leakage) problem.
Ribbon updated the book to say that USB input devices are supported, improved the [binary packages explanation](https://doc.redox-os.org/book/ch02-07-configuration-settings.html#binary-packages) and documented the [environment leakage](https://doc.redox-os.org/book/ch08-05-troubleshooting.html#environment-leakage) problem.
He also documented how Redox took inspiration from OpenBSD on the "BSD" part of [this](https://www.redox-os.org/faq/#how-redox-is-inspired-by-other-systems) section of the website FAQ.
Quoting the section:
- [OpenBSD](https://www.openbsd.org/) - Redox took inspiration from the [system call](https://man.openbsd.org/pledge.2), [filesystem](https://man.openbsd.org/unveil.2), [display server](https://www.xenocara.org/) and [audio server](https://man.openbsd.org/sndiod.8) sandbox and [others](https://www.openbsd.org/innovations.html).
## Website
Ribbon improved our FAQ as always, he improved some benefits of Redox and the image variants information.
He also updated the FAQ to report that we support USB HID devices.
He also updated the FAQ to report that we support USB HID devices, improved the Community page to recommend Fractal instead of Nheko as a Matrix client alternative for Element, because it's written in Rust, better maintained and has advanced features.
## Discord Server
We now have a Discord server! It's for people that don't want to use Matrix, and hopefully it will be more convenient.
The messages from Matrix are sent to Discord and the messages from Discord are sent to Matrix througn a Matrix bridge bot.
Once you join the server, request to be a member on the #join-requests room.
You can open the invite [here](https://discord.gg/JfggvrHGDY).
## Join us on Matrix Chat
Loading