By goyox86 on

This is the 24th 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!

TL;DR

Welcome to another edition of “This Week in Redox”! Without further preamble let’s dive in!

Starting with the kernel land @jackpot51 started work on signals as this is needed for one of cargo ’s dependencies. Also @ids1024 Implemented the getppid system call. There was not much activity on the drivers side of things, only a fix for seek flags handling on the Intel HDA audio driver by @xTibor.

The folks of Ion specially @huntergoldstein have been on fire! Shipping a ton of stuff: adding sub-expressions, convenience methods @graphemes(..) , @bytes(..) and @chars(..) supporting different ways of iterating strings. Also, the addition of a really nice match-case construct to the grammar. @mmstick along with @myfreeweb have been working on Ion’s job control facility on things like adding support for process groups, handling of SIGTERM and SIGTSTP and the addition of bg , wait and jobs builtin commands.

On TFS @ticki reenabled jemalloc as it was not the cause of this bug. Something worth to mention is that we are currently having a sneaky segfault in one of the conc::sync::treiber tests, maybe you reading this have the fix and we don’t now it!? ;) Jump in!

What about coreutils? Well, the uptime and readlink commands were added as well as a bunch of fixes and improvements for stat . netutils’s httpd was switched to the Hyper crate and the cookbook has seen the birth of a Python language recipe by @ids1024. In pkgutils the pkg continues to evolve steadily. Where you wondering what @jackpot51 has been doing? The answer is: starting the work on UEFI support! You can take a look here and here. Rust libstd support for UEFI? Yes that too! (WIP though). And last but not least @ids1024 continues his work on GSoC trying to make Redox self-hosting! Notably his work on adding symlinks support to redoxfs.

What’s new in Redox?

Kernel

@jackpot51 Started the work on signals. Details here.

@bjorn3 Fixed a lot of lint warnings. Details here.

@ids1024 Implemented the getppid system call. Details here.

system call. Details here. @ids1024 Fixed a bug in the clone system call. 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.

@huntergoldstein Added arithmetic sub-expressions to Ion’s syntax. Details here.

@mmstick Converted @[] to @() . Details here.

to . Details here. @huntergoldstein Removed an extra read increment in glob branch. Details here.

@huntergoldstein Empty argument slice now results in empty command. Details here.

@huntergoldstein Added @graphemes(..) , @bytes(..) and @chars(..) for improved string iteration. Details here.

, and for improved string iteration. Details here. @jdanford Fixed some grammar issues on the README. Details here

@huntergoldstein Refactored array_expand (and squashed bug). Details here.

(and squashed bug). Details here. @huntergoldstein Made Shell::readln to complete to a file name if the last word is a file. Details here.

to complete to a file name if the last word is a file. Details here. @mmstick Added documentation to shell::completer . Details here.

. Details here. @mmstick Implemented explicit array assignments. Details here.

@mmstick Updated the README to display explicit array syntax. Details here.

@huntergoldstein Made possible to pass an empty string to commands, functions, etc. Details here.

@MovingtoMars Updated liner and peg dependencies. Details here.

and dependencies. Details here. @huntergoldstein Introduced a match-case construct to Ion’s grammar. Details here.

@huntergoldstein Fixed executables completion. Details here.

@MovingtoMars Updated dependencies to fix a bug with liner in vi mode. Details here.

in vi mode. Details here. @mmstick Implemented SIGTERM handling. Details here.

@huntergoldstein Forced run_examples.sh to use project root as working directory. Details here.

to use project root as working directory. Details here. @jwbowen Updated the minimum rustc version requirement. Details here.

version requirement. Details here. @mmstick Implemented SIGTSTP (Ctrl+Z) handling and wait/jobs/bg builtins. Details here.

@mmstick Started the work on fg . Details here.

. Details here. @myfreeweb Added more work on job control and fixed a pid bug. Details here.

@mmstick Added support for monitoring child with waitpid and forking shell with with background jobs. Details here.

and forking shell with with background jobs. Details here. @mmstick Did some work on storing configurations in the correct XDG app dir. Details here.

@huntergoldstein Fixed a broken Redox build. Details here.

@mmstick Added support for creating initrc and history files if they don’t exist. Details here.

Drivers

@xTibor Fixed seek flags in the Intel HDA Audio driver. Details here.

Redoxfs

@ids1024 Implemented symbolic links. Details here, here, here, here and here.

TFS

TFS is a modular, fast, and feature rich next-gen file system, employing modern techniques for high performance, high space efficiency, and high scalability.

@ticki Brought back jemalloc into conc (turns out it was not a bug in jemalloc). Details here.

(turns out it was not a bug in jemalloc). Details here. @ticki Fixed the conc::sync::treiber::tests::increment test, which previously was looping infinitely. Details here.

test, which previously was looping infinitely. Details here. @ticki Added a test for nested conc::Atomic . Details here.

. Details here. @ticki Introduced conc::Atomic::destroy_no_guard() for no-overhead destruction of the atomic. Details here.

for no-overhead destruction of the atomic. Details here. @ticki Fixed the destructor of conc::sync::treiber , which previously was double dropping. Details here.

, which previously was double dropping. Details here. @ticki Made a fix to prevent calling destructors on null pointers in conc::sync::treiber . Details here.

. Details here. @ticki Made a change to ensure that conc::Treiber::drop doesn’t cause double-drop of the inner. Details here.

doesn’t cause double-drop of the inner. Details here. @ticki Added a test for conc::Atomic<()> . Details here.

. Details here. @ticki Provide a message on why conc::Guard is must_use . Details here.

is . Details here. @ticki Removed some warnings in conc . Details here.

. Details here. @ticki Updated parking_lot and owning_ref in chasmap . Details here.

Coreutils

@goyox86 Added the uptime command. Details here.

command. Details here. @ids1024 Added the readlink command. Details here.

command. Details here. @ids1024 Improved the stat command. Details here.

command. Details here. @ids1024 Made stat use O_NOFOLLOW . Details here.

use . Details here. @sebastianpfluegelmeier Added support for ls columned output. Details here.

columned output. Details here. @ids1024 Made stat use libstd instead of system calls. Details here.

Netutils

@ids1024 Switched httpd to use the Hyper crate. Details here.

Cookbook

The cookbook the collection of package recipes of Redox. The effort on self-hosting continues! And @ids1024 is working hard on a cargo recipe. How cool is that?

@ids1024 Added a system for compile-time dependencies (needed for openssl). Details here.

@ids1024 Updated gcc and dash recipes to create symlinks. Details here.

and recipes to create symlinks. Details here. @ids1024 Added a recipe for Python. Details here.

@ids1024 Made a change to forward the target to pkg . Details here.

Pkgutils

The pkgutils are a set of utilities for package management on Redox.

@ids1024 Added support for determining the default target based on LLVM triple at build. Details here.

@ids1024 Prevented the following of symbolic links when creating packages. Details here.

@ids1024 Improved the error handling in pkg . Details here.

. Details here. @ids1024 Added a --root argument to pkg also now the help message is printed when no subcommand. Details here.

New contributors

Since the list of contributors are growing too fast, we’ll now only list the new contributors. This might change in the future.

Sorted in alphabetical order.

clippix 🎂

goyox86 🎂

myfreeweb 🎂

If I missed something, feel free to contact me (goyox86) or send a PR to Redox website.