By goyox86
on Friday, July 14, 2017

This is the 25th 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 or our Discourse forum!

What’s new in Redox?

TL;DR

Big news this week: We released 0.3.0.It is a big release including many improvements notably the Cookbook based build system and a new ACPI stack. Go read the announcement!

Now to this weeks summary: We shipped a couple of changes to the bootstrap script and the cookbook that should make the on-boarding on macOS smooth again. Go ahead try and give us feedback <3.

The kernel was very active this week, particularly with the landing of the initial support for signals by @jackpot51! Also, a new API for specifying custom memory allocators and changes in the alloc crate API landed in nightly so the kernel had to be updated. Mr @CWood1 added an HPET (High Precision Event Time) driver to the kernel and also moved the PIT (Programmable Interval Timer) driver from the bootloader to the kernel as part of his ongoing work on ACPI. @ids1024 shipped some fixes to kernel’s dup2() and exec() too.

Ion impressive streak continues mainly propelled (but no limited to) by @mmstick and @huntergoldstein. Ion’s biggest highlight this week? The completion of job control and addition of the fg builtin command! Also asynchronous history writing, the addition of an array! macro to ease the creation of inline Arrays in Ion’s codebase, initial support for herestrings, the extraction of calc to it’s own crate, refactoring to signal handling, forking, the reimplementation of pipelines::collect into a recursive descendent parser, set -x’s implementation and many fixes. You should try it , works in Linux too ;).

Drivers had to also be updated to the new alloc API (mainly vesad). Coreutils now have a base64 command by @goyox86, a new shiny dirname command along with recent support for rm for the -f flag thanks to @ids1024.

Other important highlight is the addition of initial mtime/ctime support and the implementation of futimens in Redoxfs.

Last but not least the cookbook saw a lot of activity with a new system for compile-time dependencies by @ids1024 and package recipes for git, gawk, findutils, GNU sed, pastel, nasm, rustual-boy.

Kernel

https://github.com/CWood1 Added an HPET (High Precision Event Time) driver to the kernel and also moved the PIT (Programmable interval timer) driver from the bootloader to the kernel.

@ids1024 Made dup2() work even if second file descriptor doesn’t exist. Details here.

@ids1024 Made a fix for process::exec() by stripping whitespaces after shebangs. Details here.

@ids1024 Made a fix for process::exec() and now it passes the relative, not canonicalised, path to scripts. Details here.

@ids1024 Made pipe::read() return when write end is closed (but it was afterwards reverted). Details here.

@jackpot51 Updated the kernel to the new Rust allocator API. Details 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.