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
rustc
to wait on non-child process. He also added thesys:syscall
scheme for seeing active system calls. Details here. - @xTibor Migrated from
collections
. Details here. - @jackpot51 Made the
debug
function 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_atomics
feature. Instead of usingAtomicUsize
andAtomicBool
fields withinForegroundSignals
they were switched toAtomicU32
andAtomicU8
. Details here. - @mmstick Ran
rustfmt
again. Details here. - @mmstick Removed the dependency on the
nix
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. - @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. - @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
which
builtin. Details here. - @mmstick Made more process expansion improvements. Details here.
- @mmstick Implemented
!0
,!^
, 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. - @jackpot51 Added LLVM LTO linkages. Details here.
- @goyox86 Added a recipe for
fd
. Details here. - @jackpot51 Updated
rust
recipe. Details here. - @jackpot51 Used
nproc
for rust LLVM. Details here. - @jackpot51 Updated
cargo
path. Details here. - @ids1024 Made
repo.sh
to accept--debug
and 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
vttest
recipe. 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
ransid
color 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
Color
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.
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.