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.rsto 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
bitflagsto 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
readlnlogic 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
forkmethod. Details here. - @mmstick Made further public API improvements. Details here.
- @ids1024 Made
IonErrorderive debug. Details here. - @ids1024 Added
set_var()andget_var()methods toIonLibrary. Details here. - @mmstick Further public API Improvements. The
IonLibraryinterface 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
binarymodule. Details here. - @mmstick Made some assignment optimizations. Details here.
- @AgustinCB Escaped unescape. Details here.
- @KaKnife Added
--helpargument and therandombuiltin. 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&unescapeMethods (#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.shloudly 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,janssonandssh. Details here. - @sajattack Made a quick fix to the
sshrecipe. Details here. - @xTibor Added recipe version to
vttestrecipe. Details here. - @sajattack Fixed
vim.patch. Details here. - @sajattack Change
sshrecipe to use custom branch ofnewlib. Details here. - @jackpot51 Updated
pkgutils. Details here. - @jackpot51 Fixed
prboomrecipe. Details here. - @sajattack Created
jansson.patchin thejansson. Details here. - @xTibor Added
periodictablerecipe. Details here. - @jackpot51 Cleaned up LLVM build in Rust recipe. Details here.
- @jackpot51 Improved build speed of Rust recipe. Details here.
- @jackpot51 Fixed
llvm-configpath. Details here. - @AgustinCB Fixed
xzrecipe. 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.gzpackage 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_usersinorblogin. 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
vt100compliance. Details here. - @jackpot51 Improved
vttestperformance. 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
testpattern. Details here. - @jackpot51 Handled parameters. Details here.
- @jackpot51 Fixed
ESC DandESC Ebehavior. 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
Groupusersfield to be a vector ofStrings. Details here. - @goyox86 Implemented
AllUsersiterator. Details here.
Userutils
User and group management utilities.
- @goyox86 Migrated to the new
redox_userscrate, 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
opensshto compile. Details here. - @sajattack Replaced
glibcheaders with newlib ones where possible. Details here. - @sajattack Removed
ioctl.hand revertnetdb.hfor breaking ncurses and bash. Details here. - @sajattack Removed
un.hfor breaking openssl. Details here. - @sajattack Added
sshdependencies. 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.