The Internet on Redox

By Jackpot51 & Ticki on

Recently there have been questions about Redox on Github and Reddit about the state of the project. Commenters have stated that git commits are regular, but the project has not released any news. The truth is that we have been working very diligently to bring a huge update, and near a possible release milestone (even though we had no plans on doing so).

So, instead of the regular “This Week in Redox”, we bring you a summer edition, featuring internet support, a memory allocator, and loads of loads of more.

Working autonomously, with no direction, we stumbled on a massive list of changes that make Redox much, much more interesting.

If you would like, go to our github and star, watch, fork, pull, and/or build. Don’t forget to checkout out our organization page, it contains most of our repositories.

1. Internet support

Major changes to the Redox network stack allow for routing to the internet and back:

Images downloaded from here using wget

IRC client

2. Ralloc.

Ralloc is a brand-new memory allocator, which is now the default in Redox. Ralloc features high security and many debugging utilities, along with a good performance (although, it is to be improved).

We have been able to remove links to the C library (newlib) from our Rust standard library. Ralloc has been much more performant, as it minimizes expensive syscalls.

Ralloc is quite memory efficient, due to using arbitrarily sized blocks in the bookkeeping.

Here’s an example log of the inner workings of ralloc:

|   : BRK'ing a block of size, 80, and alignment 8.            (at bookkeeper.rs:458)
|   : Pushing 0x5578dacb2000[0x0] and 0x5578dacb2050[0xffb8].  (at bookkeeper.rs:490)
|x  : Freeing 0x1[0x0].                                        (at bookkeeper.rs:409)
x|  : BRK'ing a block of size, 4, and alignment 1.             (at bookkeeper.rs:458)
x|  : Pushing 0x5578dacc2008[0x0] and 0x5578dacc200c[0xfffd].  (at bookkeeper.rs:490)
x|x : Reallocating 0x5578dacc2008[0x4] to size 8 with align 1. (at bookkeeper.rs:272)
x|x : Inplace reallocating 0x5578dacc2008[0x4] to size 8.      (at bookkeeper.rs:354)
_|x : Freeing 0x5578dacb2058[0xffb0].                          (at bookkeeper.rs:409)
_|x : Inserting block 0x5578dacb2058[0xffb0].                  (at bookkeeper.rs:635)

3. TTF and PNG support

Using rusttype, we are able to display TTF fonts in pure Rust without using FreeType!

Start menu and character map

4. Games

pixelcannon running on Redox (at 150 FPS)

reblox

5. Terminal ANSI

Lots of changes have been happening beneath the hood to ensure feature completeness and correctness in the Redox terminal

Terminal with TTF fonts, obligatory screenfetch

6. Handbook

We have started a handbook, which can be viewed here, and made a terminal viewer for MD files

info displaying the Redox handbook, using mdless

7. RedoxFS

Our filesystem, RedoxFS, can be used on Linux using FUSE and has been tested thoroughly, builds are done by mounting a new filesystem using the FUSE driver.

8. Kernel

9. Ports and Libc

What’s next?

Thanks to

This list is likely incomplete, please contact Jackpot or Ticki for updating it.

and many more…

10. There was probably more

Due to the amount of time since the last update, and the hundreds of commits since, it was hard to create a list about what had changed. My recommendation: go to our github and star, watch, fork, pull, and/or build. Don’t forget to checkout out our organization page, it contains most of our repositories.