By goyox86 on

This is the 31st 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 .

Don’t forget that if you would like to see any package ported to Redox or are working porting one, please jump on the chat and we are there to help you! Also, suggestions on packages you would like to see to ported are more than welcome!

What’s new in Redox?

TL;DR

Hello and welcome to another issue of This Week in Redox!

The Last two weeks we have been busy working on some cool and exciting stuff!

Let’s start with the no-so-exciting things. That is: bootloader and drivers got their LICENSE file.

Moving on to the super exciting territory we have @jackpot51 (who else!?), who has been pretty busy standing on @ids1024’s shoulders and his GSoC work on self hosting. He has been implementing the remaining tasks and fixing the outstanding issues preventing us to run rustc and cargo inside Redox. This is a big deal! As is the crucial step on making Redox OS self hosted.

kernelwise @jackpot51 implemented interrupting on signals on pipes. He also made a hack to allow rustc to wait on non-child processes and incorporated a new sys:syscall scheme with the objective of seeing active system calls. He also migrated the kernel from the collections library and shipped many fixes to waitpid .

On the Ion side of things (and pretty much as always) we have a ton of stuff! But without a doubt, the highlights are for @chrisvittal’s implementation of multiple redirection, enabling us to do things like: cmd <file1 <file2 ^>> err-log > output | cmd2 (Go see the PR for more info). There were also a number of performance optimizations on assignments and parsing (remember that one of Ion’s goals is to remain at minimum as fast as the Dash shell) along better process expansion support (via forking). Lastly, @Shiwin implemented $regex_replace while @mmstick implemented !! , !$ !0 , !^ and !* .

There was lots of activity on the cookbook too: The addition of man pages by @jackpot51, @NilSet adding a recipe for PrBoom (Yes! we almost run doom!). Mr @goyox86 adding support for the recently released fd , @sajattack porting termplay finishing up with @xTibor who added a vttest recipe.

Orbterm saw @jackpot51 updating ransid which improved significantly ANSI compliance. Versions 0.2.0 , 0.2.1 and 0.2.2 were also released while @xTibor made some updates to use the new ransid color handling.

As mentioned before, ransid, our backend for terminal emulators got some love. It’s ANSI compliance was improved significantly. Notably, versions 0.3.1 , 0.3.2 , 0.3.3 and 0.3.4 shipped improvements to unknown escapes parsing, corrections on csi handling of missing escapes and fixes for cursor movement csis.

Stopping on the utilities station we have: userutils, coreutils and extrautils getting man pages and netutils’s dhcpd gaining the ability to broadcast packets.

Our C standard library, newlib (our fork of newlib with Redox support, which we implement in Rust :)) saw some networking header additions additions by @sajattack.

Last but not least! @ids1024 is working on a Rust port of cook.sh (our package builder script). Take a look at the issue tracking it here and join the design discussion!

Looking forward to a next issue potentially talking about rustc and cargo running on Redox <3.

See you soon!

Bootloader

Redox OS Bootloader.

@jackpot51 Created the LICENSE file. Details here.

Kernel

The Redox microkernel.

@jackpot51 Cleaned up warnings and implemented interrupt on signal in pipe. Details here.

@jackpot51 Uncommented AML value variant. Details here.

@jackpot51 Made a hack to allow rustc to wait on non-child process. He also added the sys:syscall scheme for seeing active system calls. Details here.

to wait on non-child process. He also added the scheme for seeing active system calls. Details here. @xTibor Migrated from collections . Details here.

. Details here. @jackpot51 Made the debug function never return error. Details here.

function never return error. Details here. @jackpot51 Fixed returning too many errors from waitpid . Details here.

. Details here. @jackpot51 Fixed some errors from waitpid . Details here.

Ion

The Ion Shell. Compatible with Redox and Linux.

@chrisvittal Implemented multiple redirection.. Details here.

@Shiwin Implement $regex_replace . Details here.

. Details here. @mmstick Fixed #554, Closing #554. Details here.

@mmstick Fixed #557, Closing #557. Details here.

@mmstick Made a change to use the integer_atomics feature. Instead of using AtomicUsize and AtomicBool fields within ForegroundSignals they were switched to AtomicU32 and AtomicU8 . Details here.

feature. Instead of using and fields within they were switched to and . Details here. @mmstick Ran rustfmt again. Details here.

again. Details here. @mmstick Removed the dependency on the nix crate. Closes #547. Details here.

crate. Closes #547. Details here. @mmstick Fixed #558, Closing #558. Details here.

@mmstick Simplified and improved stream dup/redirection logic. Details here.

@mmstick Re-applied rustfmt . Details here.

. Details here. @mmstick Made the builtin map is now a static struct of arrays. Details here.

@mmstick Implemented better builtin map macro syntax. Details here.

@mmstick Made a change to only check for signals that we are listening to. Details here.

@mmstick Worked on further signal handling optimizations. Details here.

@mmstick Refactored the assignments module. Severely trimming down LOC for performing assignments. Details here.

@mmstick Implemented an ArgumentSplitter optimization. Details here.

optimization. Details here. @mmstick Optimized & enhanced assignment parsing. Details here.

@mmstick Fixed unit tests. Details here.

@mmstick Optimized statement splitter. Details here.

@mmstick Implemented !! and !$ expansions. Details here.

and expansions. Details here. @ids1024 Added the which builtin. Details here.

builtin. Details here. @mmstick Made more process expansion improvements. Details here.

@mmstick Implemented !0 , !^ , and !* . Details here.

, , and . Details here. @mmstick Removed the EXPAND_PROCESSES flag. Details here.

drivers

Redox OS Drivers.

@jackpot51 Created the LICENSE file. Details here.

cookbook

A collection of package recipes for Redox.

@jackpot51 Added man pages. Details here.

@NilSet Added recipe for PrBoom . It almost runs doom!. Details here.

. It almost runs doom!. Details here. @jackpot51 Added LLVM LTO linkages. Details here.

@goyox86 Added a recipe for fd . Details here.

. Details here. @jackpot51 Updated rust recipe. Details here.

recipe. Details here. @jackpot51 Used nproc for rust LLVM. Details here.

for rust LLVM. Details here. @jackpot51 Updated cargo path. Details here.

path. Details here. @ids1024 Made repo.sh to accept --debug and pass it to cook.sh . Details here.

to accept and pass it to . Details here. @jackpot51 Updated pkgutils . Details here.

. Details here. @jackpot51 Fixed repo script. Details here.

@sajattack Added recipe for termplay . Details here.

. Details here. @sajattack Add instructions for Arch and other distributions. Details here.

@xTibor Added vttest recipe. Details here.

Orbterm

Orbital Terminal, compatible with Redox and Linux.

@jackpot51 Updated ransid , improving ANSI compliance significantly. Details here.

, improving ANSI compliance significantly. Details here. @jackpot51 Fixed unused variable warning. Details here.

@jackpot51 Released version 0.2.0 . Details here.

. Details here. @xTibor Updated to new ransid color handling. Details here.

color handling. Details here. @jackpot51 Updated dependencies. Details here.

@jackpot51 Released 0.2.1 . Details here.

. Details here. @jackpot51 Fixed reverse scrolling. Details here.

@jackpot51 Released 0.2.2 . Details here.

ransid

Rust ANSI Driver - a backend for terminal emulators in Rust.

@jackpot51 Improved significantly ANSI compliance. Details here.

@xTibor Converted Color into an enum. Details here.

into an enum. Details here. @jackpot51 Released 0.3.1. Details here.

@jackpot51 Improved unknown escapes parsing. Details here.

@jackpot51 Released 0.3.2. Details here.

@jackpot51 Released 0.3.3 - Correct csi handling of missing escapes. Details here.

@jackpot51 Released 0.3.4 - Fixing cursor movement csis. Details here.

Userutils

User and group management utilities.

@jackpot51 Fixed man pages. Details here.

Coreutils

The Redox coreutils.

@jackpot51 Fixed man page names. Details here.

Extrautils

Extra utilities for Redox (and Unix systems).

@jackpot51 Fixed man page names. Details here.

Netutils

Network Utilities for Redox.

@jackpot51 Made a change to allow broadcast packets in dhcpd . Details here.

Newlib

A fork of newlib from git://sourceware.org/git/newlib-cygwin.git with Redox support.

@sajattack Added some networking headers. 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.