PSA

If you have any questions, ideas, or are curious about Redox, we recommend joining #redox on irc.mozilla.org, our Discourse forum or you can get an invite to our chat by sending an email request to info@redox-os.org.

What’s new in Redox?

TL;DR

Welcome to the last TWiRx of the year!

2017 has been fantastic! The project has been more active and vibrant than ever.
The team worked super hard and shipped a ton of interesting stuff! I am preparing a summary of the most interesting things that happened in 2017 and I will be publishing it in a few days. So stay tuned!

Without further ado, here is what happened this last few weeks:

Big news! We were surprised this week by @jackpot51 and his news about the plans to create a foundation to support and foster Redox OS and it’s ecosystem. This is really good news! More on it on the upcoming issues.

In the main top-level repo (redox) netdb (which contains the default /etc/hosts and friends) is now included in the filesystem by default. Also, @jD91mZM2 fixed the rust toolchain to nightly-2017-12-21 as the ring does not work with the latest nightly.

In the kernel there was a super cool page table optimization made by @weclaw1, basically now we use bits 51-61 in the first entries of each page table as a counter for used entries. After this change, checking if page table is empty is a O(1) operation instead of O(n), where n is the number of entries, Neato!

The null and zero daemons which implement the null: and zero: schemes respectively where moved to userspace by @Arcterus, along with a shinny new frename implementation.

As you might suspect, the syscall crate the new, shinny frename call, <3.

Redoxfs got renaming support with the implementation of frename.

Ion, The Redox (and Linux) shell, saw a lot of activity, notably the addition of the exec builtin by @dlrobertson, the addition of a title bar setting and the ability to produce any character using hex code by @jackpot51. @nihathrael was busy adding the @lines() and @reverse() methods while @mmstick made a change to use a static map for simple color lookups, removed Shell::update_variables, added UID and EUID, added support for enabling forks to ignore streams, fixed EAGAIN error on forks and started to work on library/binary separation.

The cookbook saw the birth of a newlib test suite, packages for the recently moved to userspace nulld and zerod daemons, some improvements to the bash along a fixed the raw-bin (which was broken because of the recent changes to redox_users’s API).

On the GUI side of things, Orbtk the widget toolkit saw a change by @FloVanGH who used include_bytes! to load icons on ComboBoxes.

Also UI related, Orbterm, the terminal emulator, received an Ion related fix which unsets the COLUMNS and LINES variables while @jD91mZM2 landed the initial configuration support.

libextra got a new unwrap_or_exit helper meant to simplify a lot of repetitive code in the *utils (and CLI apps) packages.

Finally, in the land of the utils (coreutils and userutils), there were only two minor changes related to using unwrap_or_exit and the new APIs exposed by redox_users.

Thanks to all the people who supported the project this year, from the contributors to the patreons, and all the people that spread the word, and the Rust community for creating such an amazing tool, enabling us our ultimate objective: to create a modern, lightweight fast and above all, a safer operating system.

@mmstick Fixed EAGAIN fork errors. The waitpid() function is required to reap child processes. The forking code was not using it, it would eventually cause EAGAIN errors, to occur. With this change, this will no longer be the case. Closes #589. Details here.