This Week in Redox 31
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
rustcto wait on non-child process. He also added thesys:syscallscheme for seeing active system calls. Details here. - @xTibor Migrated from
collections. Details here. - @jackpot51 Made the
debugfunction never return error. Details here. - @jackpot51 Fixed returning too many errors from
waitpid. 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. - @mmstick Fixed #554, Closing #554. Details here.
- @mmstick Fixed #557, Closing #557. Details here.
- @mmstick Made a change to use the
integer_atomicsfeature. Instead of usingAtomicUsizeandAtomicBoolfields withinForegroundSignalsthey were switched toAtomicU32andAtomicU8. Details here. - @mmstick Ran
rustfmtagain. Details here. - @mmstick Removed the dependency on the
nixcrate. 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. - @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
ArgumentSplitteroptimization. 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. - @ids1024 Added the
whichbuiltin. Details here. - @mmstick Made more process expansion improvements. Details here.
- @mmstick Implemented
!0,!^, and!*. Details here. - @mmstick Removed the
EXPAND_PROCESSESflag. 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. - @jackpot51 Added LLVM LTO linkages. Details here.
- @goyox86 Added a recipe for
fd. Details here. - @jackpot51 Updated
rustrecipe. Details here. - @jackpot51 Used
nprocfor rust LLVM. Details here. - @jackpot51 Updated
cargopath. Details here. - @ids1024 Made
repo.shto accept--debugand pass it tocook.sh. Details here. - @jackpot51 Updated
pkgutils. Details here. - @jackpot51 Fixed repo script. Details here.
- @sajattack Added recipe for
termplay. Details here. - @sajattack Add instructions for Arch and other distributions. Details here.
- @xTibor Added
vttestrecipe. Details here.
Orbterm
Orbital Terminal, compatible with Redox and Linux.
- @jackpot51 Updated
ransid, improving ANSI compliance significantly. Details here. - @jackpot51 Fixed unused variable warning. Details here.
- @jackpot51 Released version
0.2.0. Details here. - @xTibor Updated to new
ransidcolor handling. Details here. - @jackpot51 Updated dependencies. Details here.
- @jackpot51 Released
0.2.1. 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
Colorinto 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.
Handy links
- The Glorious Book
- The Holiest Forum
- The Shiny ISOs
- Redocs
- Fancy GitHub organization
- Our Holy Grail of a Website
- The Extreme Screenshots
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.
- @sajattack 🎂
- @Shiwin 🎂
If I missed something, feel free to contact me @goyox86 or send a PR to Redox website.