By goyox86 on

This is the 34th 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 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.

See you next year!

Redox

Redox: Main repository.

@jackpot51 Added netdb . Details here.

. Details here. @jackpot51 Updated cookbook . Details here.

. Details here. @jackpot51 Updated the kernel . Details here.

. Details here. @Arcterus Moved null: and zero: schemes to user space. Details here.

and schemes to user space. Details here. @NilSet Made a temporal change to use bash as shell until #1124 is fixed. Details here.

as shell until #1124 is fixed. Details here. @jackpot51 Updated the cookbook and the kernel . Details here.

and the . Details here. @jD91mZM2 Created rust-toolchain . Details here.

. Details here. @NilSet Installed realpath for cookbook CI. Details here.

@jackpot51 Updated cookbook. Details here.

@jackpot51 Updated rust to the same commit as rust-toolchain . Details here.

to the same commit as . Details here. @jackpot51 Updated rust and kernel . Details here.

and . Details here. @jackpot51 Updated cookbook . Details here.

. Details here. @jackpot51 Updated kernel . Details here.

. Details here. @jackpot51 Reverted “Use bash as shell until #1124 is fixed”. Details here.

@ids1024 Made a change in order to not mentioning rustup override set in the README. Details here.

Kernel

The Redox microkernel

@weclaw1 Made a page table optimization. Details here.

@Arcterus Moved null and zero from kernel space to user space. Details here.

and from kernel space to user space. Details here. @NilSet Made a change to check if current namespace exists. Details here.

@jackpot51 Added clippy lints, as well as made some improvements based on clippy suggestions. Details here.

lints, as well as made some improvements based on suggestions. Details here. @jackpot51 Added frename . Details here.

. Details here. @jackpot51 Used TLS alignment to fix https://github.com/redox-os/redox/issues/1124 (was causing Ion to pagefault). Details here.

Ion

The Ion Shell. Compatible with Redox and Linux.

@dlrobertson Added the exec builtin. Details here.

builtin. Details here. @AgustinCB Replaced writeln!(stderr, ...) by calls to eprintln! . Details here.

by calls to . Details here. @mmstick Don’t expand prompt function outputs. Fixing #641. Details here.

@dlrobertson Fixed errors with sys::execve on linux. Details here.

on linux. Details here. @jackpot51 Added title bar setting, also added the ability to produce any character using hex code. Details here.

@mmstick Made a change to use static maps for simple color lookups. Details here.

@Sag0Sag0 Added manpage for Ion. Details here.

@nihathrael Added @lines() method (#441). Details here.

method (#441). Details here. @nihathrael Reformated the code. Details here.

@mmstick Removed Shell::update_variables . Details here.

. Details here. @nihathrael Add @reverse() method (#441). Details here.

method (#441). Details here. @mmstick Added UID and EUID string variables. Details here.

and string variables. Details here. @dlrobertson Fixed type casts in sys::redox . Details here.

. Details here. @dlrobertson Updated test builtin option parsing. Details here.

@mmstick Update version & dependencies. Details here.

@nihathrael Made tests variable naming consistent. Use @ for arrays. Details here.

@gnieto Fixed issues with escaping on double quote context. Details here.

@covercash2 Made a fix for issue #585. Details here.

@mmstick Forks may now ignore streams. Details here.

@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.

fork errors. The 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. @mmstick Initial library/binary separation. Details here.

@mmstick Fixed some Redox errors. Details here.

@mmstick Fixed the Redox build. Details here.

@jackpot51 Fixed the Redox build. Details here.

@mmstick Overhauled the foreground job control. Details here.

Cookbook

A collection of package recipes for Redox.

@jackpot51 Added newlibtest repo. Details here.

repo. Details here. @jackpot51 Fixed build of newlibtest . Details here.

. Details here. @Arcterus Added recipes for nulld and zerod . Details here.

and . Details here. @NilSet Tried to fix the CI. Details here.

@jackpot51 Allowed missing llvm-source in rust recipe. Details here.

in recipe. Details here. @jackpot51 Made the bash patch smaller. Details here.

patch smaller. Details here. @raw-bin Fixed a breakage due to missing set{uid,gid) definitions. Details here.

libextra

Extra stuff, we use in the Redox project.

@goyox86 Added unwrap_or_exit . Details here.

Orbtk

The Orbital Widget Toolkit. Compatible with Redox and SDL2.

@FloVanGH Used include_bytes! to load icons of ComboBox. Details here.

Orbterm

Orbital Terminal, compatible with Redox and Linux.

@jackpot51 Made a change to unset COLUMNS and LINES to fix issues when running Ion. Details here.

and to fix issues when running Ion. Details here. @jD91mZM2 Initial config support. Details here.

redoxfs

The Redox Filesystem

@jackpot51 Added a stub for frename . Details here.

. Details here. @jackpot51 Implemented frename fixing #37 and fix #11 by checking names. Details here.

syscall

Redox Rust Syscall Library

@jackpot51 Added frename . Details here.

userutils

User and group management utilities

@goyox86 Migrated the code to the recently added unwrap_or_exit from libextra . Details here.

coreutils

The Redox coreutils.

@goyox86 Updated redox_users and libextra and used their new APIs. 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.

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