By goyox86
on Thursday, July 27, 2017

This is the 27th post of a series of blog posts tracking the development and progress of Redox, the Rust operating system. If you want to know more about Redox in general, visit our Github page.

(edited by goyox86)

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 27th edition of “This Week in Redox”!

As always, we have a bunch of good news to share with you. So lets get the ball rolling!

This week, one of the biggest changes is that we started to track the Cargo.lock file of most of Redox crates in Git as an attempt to improve the reproducibility of builds.

@jackpot51 did a bunch of work in the kernel in order to add support for process groups. Result: as of this week, you can send signals to process groups!

There was a also a small change on the kernel making an error to pass an non-empty buffer to dup in schemes, basically, after this change you will get EINVAL if you do so. @jackpot51 also prevented handling of nested signals.

The streak on Ion seems like a never ending one! They continue to ship new features and improvements at a steady (and rather fast!) pace. This week @jackpot51 simplified signal handling by adding an atomic bitmask of pending signals and removing the extra signal handling thread. Work by @mmstick on the mdBook based user manual continues, @huntergoldstein added support to allow builtins to be executed as part of pipelines, and made the RawFDs now managed by forked process when possible, along some other bug-fixes. Also in Ion, @bblancha implemented associative arrays, the and and or builtins and he added an option to the drop builtin for dropping arrays. Mr @drosseau added support for stepped ranges while @memoryleak47 implemented command line options for popd.

There was work done on moving the OS related #[cfg] functions to sys by @bb010g and @pithonsmear who added reverse, to_lowercase and to_uppercase to Ion’s word expansion parser.

The XHCI driver got a lot of love by @jackpot51 with a big general refactoring plus the addition of runtime registers, tests for the TLB, a revamp of the events mechanism, fixes of the mapping size and the addition of a lot of debugging. It looks very cool now!

Redoxfs saw the birth of directory symbolic links, a fix for readdir when directories don’t fit in the buffer and a FUSE update allowing setting mtime to earlier times. All of those by @ids1024.

On the TFS department we have for the first time in a while new contributors! This work includes @m4b’s usage of debug_map in chashmap enabling maps pretty printing, @cedenday’s remotion of specks dependency on std and the fix for an infinite loop in chashmap’s scan() by @memoryleak47. Well done people!

@ticki continues improving TFS’s
test suite along with an interesting work in reserving reserved special pointers for conc::hazard::State to avoid overlapping with pointers used in Protect. Also, if you are an compression algorithm aficionado you might want to look at @ticki’s notes on zmicro, as they were updated this week.

In coreutils land @ids1024 allowed directory as second argument to ln and implemented octal escapes in tr.

Continuing his last week’s work on userutils@goyox86 made revisions to getty, passwd, login and su in order to update them to coreutils conventions and new APIs while Mr @jackpot51 made updates to getty in order to use PTY to provide line control for raw consoles and vesad.

We end this week’s tour on the cookbook which saw the addition of a status.sh script for checking git modifications, an update.sh one to, well, update everything and the corresponding updates to cook.sh caused by Cargo.lock being now tracked in version control. All of that by @jackpot51.

@ids1024 added recipes for GNU grep, diffutils and made a patch in the git recipe to use ; as PATH separator.

Enjoy the rest, and see you next week!

Kernel

@jackpot51 Made changes to make an error to supply a dup buffer to schemes that do not handle it. Details here and here.

Ion

Ion is a shell for UNIX platforms, and is the default shell in Redox. It is still a work in progress, but much of the core functionality is complete. It is also currently significantly faster than Bash, and even Dash, making it the fastest system shell to date.

@jackpot51 Updated the ion recipe to use a custom branch with simpler signal handling and afterwards switched back to master as the simpler signals work was mainstreamed into Ion. Details here and here respectively.