This Week in Redox 32
By goyox86 on
This is the 32nd 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
Hello there! Welcome to another issue of TWiR!
This week @jackpot51 surprised us by sharing this on the Mattermost channel:
Yes! it’s cargo
running on Redox! This milestone represents a significant step forward on our path to self-hosting. Kudos to @ids1024 who worked really hard on self-hosting during the GSoC.
It’s worth mentioning that cargo
and rustc
have been @jackpot51’s focus these last two weeks and many changes are directly related (but not limited) to this effort.
So, without further ado, let’s give you an overview of what happened this week in the Redox universe!
I’m gonna start with the book where @sajattack made some updates on installation and build instructions.
Moving to the kernel, @jackpot51 was focused on implementing the remaining cargo
and rustc
missing pieces, specifically: timeouts for futexes and improving interruption detection. Also in the kernel, @pzmarzly made a fix on elf.rs
to prevent the inlining of some constants from goblin
.
As always the Ion shell saw a lot of work. Including the introduction of a new fork abstraction, which will hopefully help to eliminate some redundancy caused by the manual handling of forking logic in command expansions and function prompts. There were also readln
and quote termination refactorings as well as the elimination of heap allocations with !*
designator. All of that thanks to @mmstick. @ids1024 also worked on in Ion, adding the set_var()
and get_var()
methods to IonLibrary
while @KaKnife was busy implementing the random
builtin in addition to @AgustinCB implementing escape
and unescape
as well as a major optimization to perform builtin Lookup when parsing now the builtin lookup once when parsing the statement, rather than performing a lookup for a given builtin command for each statement repeatedly.
This week, I saw a new contributor super active in the chat, asking many questions, and trying to port stuff to Redox. The result: the addition of recipes for vim
, jansson
and openssh
to the cookbook. Give it up for @sajattack!
Continuing with the cookbook: @xTibor added recipe version to vttest
in addition to a new periodictable
recipe, along with lots of activity from @jackpot51 who cleaned up LLVM the build and improved build speed of the rust
recipe, fixed llvm-config
’s path. Meanwhile @AgustinCB focused efforts on fixing the xz
recipe.
On the Orbtk side of things, @BojanKogoj added clear()
to Grid
plus some examples. Continuing on the GUI work, the Orbterm emulator saw a bunch of updates, mostly related to bumping ransid who experienced a bunch of improvements: fixes to overflow, improvements on the vt100
compliance, better vttest
performance and few enhancements to the parsing of nested control characters.
Moving onto pkgutils, few issues related to dependency resolution were addressed, and now we are retrieving the dependency list from repo.
A quick glimpse to the utilities land reveals a new small new crate: redox_users. Basically, we moved all of the users and groups functionality there (along with few new goodies and documentation improvements), functionality that was previously embedded on userutils which was not optimal. This was done by @goyox86 as part of his ongoing work on porting the exa to Redox.
The userutils coreutils packages were updated to redox_users in addition to some general refactoring and cleanup.
Another package updated to redox_users was Orbutils. The migration was done by @chebykinn and @AleVul.
And last but not least, newlib our C library got some attention from @sajattack who removed include of nonexistent endian.h
file, added all the headers necessary for openssh
to compile, replaced glibc
headers with newlib ones where possible as well as implemented scandir()
and alphasort()
.
Now I leave you with the details. See you next time, hopefully with rustc
compiling some interesting crates ;)!
Book
The Redox book.
- @sajattack Made a change to highlight the fact that we need
cargo install xargo
. Details here. - @sajattack Updated the build preparation instructions. Details here.
- @sajattack Updated the toolchain installation instructions. Details here.
Kernel
The Redox microkernel.
- @sajattack Added a LOC badge. Details here.
- @jackpot51 Implemented futex timeouts. Details here.
- @pzmarzly Made a fix on
elf.rs
to not inline constant from goblin library. Details here. - @jackpot51 Removed
SwitchResult
, used out of band data to detect interruption and updated debugging code. Details here.
Ion
The Ion Shell. Compatible with Redox and Linux.
- @Eijebong Bumped
bitflags
to 1.0. Details here. - @mmstick Made process expansions to allow access to stdin. Builtin commands like read aren’t working yet. Details here.
- @mmstick Created fork abstraction with cmd expansions and fn prompts. Details here.
- @mmstick Refactored
readln
logic into it’s own module. Details here. - @mmstick Refactored quote termination logic. Details here.
- @mmstick Made a change when expanding arguments: if an argument evaluates to an empty argument, simply ignore the argument as if it didn’t exist. Details here.
- @mmstick Implemented superior word designator support. Details here.
- @mmstick Sorted the builtins and used binary search with lookups. Details here.
- @mmstick Improved public API with
fork
method. Details here. - @mmstick Made further public API improvements. Details here.
- @ids1024 Made
IonError
derive debug. Details here. - @ids1024 Added
set_var()
andget_var()
methods toIonLibrary
. Details here. - @mmstick Further public API Improvements. The
IonLibrary
interface was removed, and integrated directly, within the shell’s main module. Details here. - @xTibor Fixed string comparisons in documentation. Details here.
- @mmstick Implemented the
execute_function()
method for public API. Details here. - @ids1024 Added a
get_array()
method to the public API. Details here. - @mmstick Replace
sys::getpid()
withprocess::id()
. Details here. - @mmstick Handled signals with forks, closing #577. Details here.
- @mmstick Eliminated Heap allocation with
!*
designator. Details here. - @mmstick Refactored the
binary
module. Details here. - @mmstick Made some assignment optimizations. Details here.
- @AgustinCB Escaped unescape. Details here.
- @KaKnife Added
--help
argument and therandom
builtin. Partial fix for issue #528. Details here. - @mmstick Enhanced the fork API & simplified the public API. Details here.
- @KaKnife Documented builtins. Details here.
- @mmstick Fixed builtin documentation style. Details here.
- @AgustinCB Implemented
escape
&unescape
Methods (#579). Details here. - @AgustinCB Made a major optimization: Perform Builtin Lookup when parsing (#587). Rather than performing a lookup for a given builtin command for each statement repeatedly, we now perform the builtin lookup once when parsing the statement. Details here.
- @AgustinCB Made
./examples/run_examples.sh
loudly fail. Details here. - @AgustinCB Fixed a test with negative numbers. Details here.
Cookbook
A collection of package recipes for Redox.
- @dlrobertson Added documentation for Gentoo Linux. Details here.
- @sajattack Added recipes for
vim
,jansson
andssh
. Details here. - @sajattack Made a quick fix to the
ssh
recipe. Details here. - @xTibor Added recipe version to
vttest
recipe. Details here. - @sajattack Fixed
vim.patch
. Details here. - @sajattack Change
ssh
recipe to use custom branch ofnewlib
. Details here. - @jackpot51 Updated
pkgutils
. Details here. - @jackpot51 Fixed
prboom
recipe. Details here. - @sajattack Created
jansson.patch
in thejansson
. Details here. - @xTibor Added
periodictable
recipe. Details here. - @jackpot51 Cleaned up LLVM build in Rust recipe. Details here.
- @jackpot51 Improved build speed of Rust recipe. Details here.
- @jackpot51 Fixed
llvm-config
path. Details here. - @AgustinCB Fixed
xz
recipe. Details here. - @jackpot51 Cleaned up compilation of Rust. Details here.
- @jackpot51 Added version for
ca-certificates
. Details here. - @jackpot51 Disabled LLVM ninja build, Enable compilation of codegen tests. Details here.
Orbtk
The Orbital Widget Toolkit. Compatible with Redox and SDL2.
- @BojanKogoj Added
clear()
to Grid and example. Details here.
pkgutils
Redox Packaging Utilities.
- @jackpot51 Removed dependency resolution in
tar.gz
package case. Details here. - @jackpot51 Made a change to retrieve dependency list from repo. Details here.
- @jackpot51 Retrieve dependency list from repo. Details here.
Orbterm
Orbital Terminal, compatible with Redox and Linux.
- @jackpot51 Fixed an issue when resizing smaller than cursor. Details here.
- @jackpot51 Updated
ransid
. Details here. - @jackpot51 Fixed enter character, update
ransid
. Details here. - @jackpot51 Updated
ransid
. Details here. - @jackpot51 Updated to git
ransid
. Details here. - @jackpot51 Updated to git
ransid
. Details here. - @jackpot51 Added resize event. Details here.
- @jackpot51 Released version
0.3.0
. Details here.
Orbutils
The Orbital Utilities. Compatible with Redox and SDL2.
- @chebykinn Migrated to
redox_users
inorblogin
. Details here. - @AleVul replace userutils with redox_users in
orblogin
. Details here.
ransid
Rust ANSI Driver - a backend for terminal emulators in Rust.
- @jackpot51 Fixed overflow. Details here.
- @jackpot51 Improved
vt100
compliance. Details here. - @jackpot51 Improved
vttest
performance. Details here. - @jackpot51 Released
0.3.7
. Details here. - @jackpot51 Improved parsing of nested control characters. Details here.
- @jackpot51 Used VTE for lower level state machine. Details here.
- @jackpot51 Added
test
pattern. Details here. - @jackpot51 Handled parameters. Details here.
- @jackpot51 Fixed
ESC D
andESC E
behavior. Details here. - @jackpot51 Fixed some wrapping behaviors. Details here.
- @jackpot51 Fixe CSI
m
. Details here. - @jackpot51 Implemented titlebar. Details here.
- @jackpot51 Released
0.4.0
. Details here. - @jackpot51 Disabled
xenl
. Details here. - @jackpot51 Released 0.4.1. Details here.
- @jackpot51 Released 0.4.2 - Which fixes cursor before printing char. Details here.
- @jackpot51 Released 0.4.3 - Fixing
pb
. Details here.
Users
Redox OS APIs for accessing users and groups information.
- @goyox86 Initial commit. Details here.
- @goyox86 Added LICENSE and README. Details here.
- @goyox86 Tweaked comments. Details here.
- @goyox86 Tweaks README. Details here.
- @goyox86 Updated README. Details here.
- @goyox86 Updated Cargo.toml. Details here.
- @goyox86 Made some renaming and improved docs. Details here.
- @goyox86 Moved
Group
users
field to be a vector ofString
s. Details here. - @goyox86 Implemented
AllUsers
iterator. Details here.
Userutils
User and group management utilities.
- @goyox86 Migrated to the new
redox_users
crate, some refactoring and docs. Details here. - @goyox86 Updated README and some more documentation tweaks. Details here.
Coreutils
The Redox coreutils.
Newlib
A fork of newlib from git://sourceware.org/git/newlib-cygwin.git with Redox support
- @sajattack Removed include of nonexistent endian.h file. Details here.
- @sajattack Added all the headers necessary for
openssh
to compile. Details here. - @sajattack Replaced
glibc
headers with newlib ones where possible. Details here. - @sajattack Removed
ioctl.h
and revertnetdb.h
for breaking ncurses and bash. Details here. - @sajattack Removed
un.h
for breaking openssl. Details here. - @sajattack Added
ssh
dependencies. Details here. - @sajattack Implemented
scandir()
andalphasort()
. 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:
- @AgustinCB 🎂
- @AleVul 🎂
- @BojanKogoj 🎂
- @dlrobertson 🎂
- @Eijebong 🎂
- @gbutler69 🎂
- @pzmarzly 🎂
If I missed something, feel free to contact me @goyox86 or send a PR to Redox website.