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:

cargo on Redox

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.

Kernel

The Redox microkernel.

Ion

The Ion Shell. Compatible with Redox and Linux.

Cookbook

A collection of package recipes for Redox.

Orbtk

The Orbital Widget Toolkit. Compatible with Redox and SDL2.

pkgutils

Redox Packaging Utilities.

Orbterm

Orbital Terminal, compatible with Redox and Linux.

Orbutils

The Orbital Utilities. Compatible with Redox and SDL2.

ransid

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

Users

Redox OS APIs for accessing users and groups information.

Userutils

User and group management utilities.

Coreutils

The Redox coreutils.

Newlib

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

Handy links

  1. The Glorious Book
  2. The Holiest Forum
  3. The Shiny ISOs
  4. Redocs
  5. Fancy GitHub organization
  6. Our Holy Grail of a Website
  7. 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:

If I missed something, feel free to contact me @goyox86 or send a PR to Redox website.