By goyox86 on

This is the 33rd 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 and welcome back to another issue of TWiRx!

First of all, apologies for disappearing for a while but I’ve been super busy at work.

With that out of the way, let’s start our tour!

The fact that I was super busy these last couple of weeks did not mean that the rest of the team was idle too, in fact, they were super busy which means I have a ton of progress to share!

Lets’s start with the main repo where @sajattack and @HarryU made some fixes to the bootstrap.sh script and @dlrobertson made it possible to keep debug info in a .sym file. Also, @jackpot51 switched us to the smolnetd network stack!

The bootloader that has been updated to Redoxfs version 3.

In lower land of the kernel @jackpot51 implemented fchown and fchmod . He also improved multi-core support while @dlrobertson was busy improving the debugging support by preventing the discarding of the .debug section as well as documenting on how to use gdb .

Keeping things low level (not really because Redox drivers are in userspace ;)), we have the drivers where @jackpot51 made some vesad related updates in ransid and a fix of an error ( E0133 ) on pcid was shipped by @ghatdev.

Also driver-related is ransid, the ANSI terminal driver, who got two new versions released ( 0.4.4 and 0.4.5 ) containing an ICH implementation and fixes to DCH.

The system call interface, AKA the syscall crate saw the birth of fchown and fchmod which should make porting easier.

Before departing from the lower level layer we have Redoxfs with it’s new major version, 3, with a new block size of 4096 bytes. This new version also includes changes enabling to set block size programmatically, a simplified disk cache and implementations of fchmod and fchown .

That’s it with low level stuff. Let’s move up in the stack!

What do we have there? Well, unsurprisingly, Ion is the first. As always it was a busy period for the Ion folks. Notably: The addition of the status , bool , and is builtins by @Sag0Sag0 as well as the migration to XDG and the implementation of a “command not found” hook by @jD91mZM2. All of that along @mmstick’s work on implementation of recursive aliases, the start of the migration of the error handling to the failure crate, the implementation of huponexit and the fixed to multi-line array assignments.

Continuing our trip, we stop at the cookbook, our software packages recipes repository. Let’s see, we have new packages for: libzip , libpng , cmatrix , netdb , mdp , TiMidity++ and the GeneralUser GS sound fonts along with a big increase in the set of binaries we use from uutils .

Switching gears to the GUI is Orbclient where @robbycerantola implemented antialiased circles and lines.

Also in the GUI department, the Orbtk toolkit saw new version 0.2.26 including a Grid by @FloVanGH, fixes to label backgrounds, splitting of CSS into separate files, addition of border radii to button to Button and many more from @jackpot51, without forgetting @jsalzbergedu who allowed the user to specify a theme.

Orbutils was the object of @BojanKogoj’s attention this period with updates on the run instructions and the addition of a new shinny Calendar app. Also, @MggMuggins updated all the code related to redox_users as we changed that API quite a lot during the last few weeks.

Next in the queue, is Orbterm, the terminal emulator. Orbterm released two new versions: 0.3.1 and 0.3.2 with improved resize performance by @jackpot51 and the extraction of width and heights into fields by @xTibor.

Sodium, the text editor got a bit of love from @sajattack who made a change to infer file to save to from file opened.

On the utils section, the userutils crate was under heavy refactoring and improvement primarily by @MggMuggins who added groupadd and useradd as well refactored of almost all the rest of the tools. Related to this work is the one done by @goyox86 on the redox_users crate improving error handling and propagation by moving it to the failure crate. @MggMuggins also extended redox_users API with the add_user , add_group and get_gid functions.

The coreutils package got lots of attention too. Here @Mojo4242 simplified dd , @Tommoa made some performance improvements for cat , while @jackpot51 was shipping chown and using more utilities from uutils instead of our own.

Lastly but not least is extrautils who experienced a small change to use cksum from uutils .

Phew! That was a lot of work <3

See you soon!

Redox

Redox: A Rust Operating System.

@HarryU Made a fix to check that xargo isn’t already installed before trying to install. Details here.

isn’t already installed before trying to install. Details here. @jackpot51 Switched to smolnetd . Details here.

. Details here. @dlrobertson Implemented a change to keep debug info in a .sym file. Details here.

file. Details here. @TSleepingCat Removed broken old kernel link. Details here.

@sajattack Added cmake dependency to bootstrap.sh . Details here.

Bootloader

Redox OS Bootloader.

@jackpot51 Updated to RedoxFS 3. Details here.

Book

The Redox book.

@covercash2 Listed cmake as a dependency. Details here.

Kernel

The Redox microkernel.

@jackpot51 Added fchown and fchmod . Details here.

and . Details here. @jackpot51 Released version 0.1.32 . Details here.

. Details here. @dlrobertson Made a change to prevent discarding the .debug section. Details here.

section. Details here. @dlrobertson Added documentation on using gdb . Details here.

. Details here. @jackpot51 Allowed other processors to pick up work. Details here.

@jackpot51 Improved multi-core support. Details here.

Ion

The Ion Shell. Compatible with Redox and Linux.

@AgustinCB Made a change to use less heap. Details here.

@AgustinCB Cleaned up some technical debt and added some tests. Details here.

@bheesham Added code block for multi-line comments in the docs. Details here.

@AgustinCB Updated the documentation of string methods. Details here.

@mmstick Updated dependencies. Details here.

@mmstick Applied rustfmt and closed #602. Details here.

and closed #602. Details here. @Sag0Sag0 Added builtin status . Details here.

. Details here. @AgustinCB Tested and refactored array methods. Details here.

@Sag0Sag0 Added the bool builtin. Details here.

builtin. Details here. @Sag0Sag0 Added the is builtin. Details here.

builtin. Details here. @mmstick Re-enabled empty strings and allowed empty outputs. Closing #611 and #573. Details here.

@dlrobertson Updated the disown command. Details here.

command. Details here. @AgustinCB Added split_at to the manual. Details here.

to the manual. Details here. @AgustinCB Merged unescape methods. Details here.

methods. Details here. @AgustinCB Added functions to the manual. Details here.

@dlrobertson Improved bad argument parsing of setup.ion . Details here.

. Details here. @mmstick Stopped liner’s background thread in the children of a fork. Details here.

@mmstick Reverted fork Changes. Details here.

Changes. Details here. @mmstick Fixed the not/and/or builtins to not require re-submission to the statement splitter. Closing #607. Details here.

builtins to not require re-submission to the statement splitter. Closing #607. Details here. @mmstick Implemented recursive aliases. Closing #610. Details here.

@mmstick Started the process of porting errors to failure . Details here.

. Details here. @mmstick Applied rustfmt . Details here.

. Details here. @mmstick Fixed some endlessly-looping alias expansions, resolving problems with alias ls = ls --color . Details here.

. Details here. @Sag0Sag0 Fixed “and/or followed by let results in command not found issue”. Details here.

@mmstick Reverted “Fix “and/or followed by let results in command not found issue” (#620)“, , This reverts commit daab4fb0c49d3b39a6e34532253a21698a86a3a2.. Details here.

@liftedkilt Fixed some typos. Details here.

@anxiousmodernman Allowed builtins in aliases. Details here.

@Sag0Sag0 Added manual pages for almost all builtins. Details here.

@jD91mZM2 Migrated to xdg . Details here.

. Details here. @Sag0Sag0 Added manual pages for almost all builtins. Details here.

@Sag0Sag0 Added ability for which builtin to process multiple arguments. Details here.

builtin to process multiple arguments. Details here. @jD91mZM2 Implemented a “command not found” hook. Details here.

@AgustinCB Fixed #627. Details here.

@mmstick Updated README.md . Details here.

. Details here. @mmstick Added a color namespace test. Details here.

@covercash2 Made newlines in prompt display correctly. Details here.

@Sag0Sag0 Added tests for the is builtin. Details here.

builtin. Details here. @mmstick Updated rustfmt config. Details here.

config. Details here. @jD91mZM2 Disowned using &! . Details here.

. Details here. @AgustinCB Fixed panic on heredoc. Details here.

@jD91mZM2 Updated rust-xdg URL in Cargo.toml . Details here.

URL in . Details here. @mmstick Improved job control builtin documentation. Details here.

@mmstick Implemented huponexit shell option. Details here.

@mmstick Fixed issues w/ multi-line Array Assignments. This fix will ensure that comments within multi-line array assignments are properly. Closing #642. Details here.

@mmstick Made a multi-line array test fix. Details here.

@mmstick Added a few more integration tests. Details here.

@mmstick Made a change to only borrow builtin args when needed. Details here.

Drivers

Redox OS Drivers

@jackpot51 Updated ransid for vesad . Details here.

for . Details here. @jackpot51 Removed debug statements. Details here.

@ghatdev Fixed error E0133 on pcid . Details here.

Cookbook

A collection of package recipes for Redox.

@sajattack Added recipes for libzip and libpng . Details here.

and . Details here. @sajattack Fixe the xz recipe. Details here.

recipe. Details here. @raw-bin Fix miscellaneous problems with the xz recipe causing Redox build failures. Details here.

recipe causing Redox build failures. Details here. @sajattack Added recipe for cmatrix . Details here and here.

. Details here and here. @xTibor Added recipes for TiMidity++ and GeneralUser GS . Details here.

and . Details here. @jackpot51 Replaced cargo branch. Details here.

branch. Details here. @xTibor Fixed ffmpeg package version. Details here.

package version. Details here. @sajattack Added recipe for netdb . Details here.

. Details here. @jackpot51 Added dependency directories for curl . Details here.

. Details here. @jackpot51 Added the async flag for the sdl recipe. Details here.

flag for the recipe. Details here. @jackpot51 Updated the sdl patch. Details here.

patch. Details here. @jackpot51 Disabled some CPU optimizations that may break machines. Details here.

@sajattack Added recipe for cmatrix and terminfo . Details here.

and . Details here. @jackpot51 Updated the sdl recipe to require 32 bpp. Details here.

recipe to require 32 bpp. Details here. @xTibor Added the ca-certificates dependency to the git recipe. Details here.

dependency to the recipe. Details here. @jackpot51 Added an unfetch script. Details here.

script. Details here. @jackpot51 Used poll with git . Details here.

with . Details here. @xTibor Added an ncursesw recipe as well as some terminfo changes. Details here.

recipe as well as some changes. Details here. @xTibor Added mdp recipe. Details here.

recipe. Details here. @jackpot51 Use all possible binaries from uutils . Details here.

Orbclient

The Orbital Client Library. Compatible with Redox and SDL2.

@robbycerantola Implemented antialiased circle and line. Details here.

@robbycerantola Add handy function to get pixel color at position x,y . Details here.

Orbtk

The Orbital Widget Toolkit. Compatible with Redox and SDL2.

@jackpot51 Released version 0.2.26. Details here.

@FloVanGH Implemented grid. Details here.

@jackpot51 Fixed the menu widget. Details here.

@jackpot51 Made a change prevent setting label background. Details here.

@jackpot51 Moved CSS into separate file. Details here.

@jackpot51 Added border radii, renamed border-thickness to standard border-width, added menu selector and hover class to button. Details here.

@jackpot51 Added focus class to text box. Details here.

@jackpot51 Used selector for drawing text. Details here.

@jsalzbergedu Allowed the user to specify a theme. Details here.

Orbutils

The Orbital Utilities. Compatible with Redox and SDL2.

@BojanKogoj Added run instructions. Details here.

@BojanKogoj Added a Calendar application. Details here.

@MggMuggins Changed use of redox_users and update Cargo.lock. Details here.

and update Cargo.lock. Details here. @MggMuggins Fixed some logic mistakes. Details here.

Orbterm

Orbital Terminal, compatible with Redox and Linux.

@jackpot51 Removed debug print. Details here.

@jackpot51 Released version 0.3.1. Details here.

@jackpot51 Improved resize performance. Details here.

@jackpot51 Released version 0.3.2. Details here.

@xTibor Extracted block widths and heights into fields. Details here.

@jackpot51 Made a change to by default, set block height to twice block width. Details here.

ransid

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

@jackpot51 Released version 0.4.4 - Implementing ICH and fixing DCH. Details here.

@jackpot51 Fix margins on resize. Details here.

@jackpot51 Released version 0.4.5. Details here.

Redoxfs

The Redox Filesystem.

@jackpot51 Updated the lock format. Details here.

@jackpot51 Made a change to set block size programmatically. Details here.

@jackpot51 Shipped version 3 - bump block size to 4096. Details here.

@jackpot51 Released version 0.3.0. Details here.

@jackpot51 Released version 0.3.1 - Fixing an issue with new FUSE. Details here.

@jackpot51 Simplified disk cache. Details here.

@jackpot51 Moved cache to a HashMap . Details here.

. Details here. @jackpot51 Released version 0.3.2. Details here.

@jackpot51 Added fchmod and fchown . Details here.

and . Details here. @jackpot51 Fixed error with borrowing packed fields. Details here.

syscall

Redox Rust Syscall Library.

@jackpot51 Add fchown and fchmod system calls. Details here.

and system calls. Details here. @jackpot51 Released version 0.1.32. Details here.

Sodium

Sodium: The Text Editor.

@sajattack Made a change to infer file to save to from file opened. Details here.

users

Redox OS APIs for accessing users and groups information.

@MggMuggins Added add_user , add_group , get_gid and fixed an empty user list issue. Details here.

, , and fixed an empty user list issue. Details here. @goyox86 Improved error handling using the failure crate. Details here.

userutils

User and group management utilities.

@MggMuggins Implemented groupadd and fixed for passwd compile. Details here.

and fixed for compile. Details here. @fraang Added missing included utility. Also added missing word. Details here.

@goyox86 Migrated to the new errors on rust_users . Details here.

. Details here. @MggMuggins Add additional flags to useradd and groupadd . Also updated cargo files. Details here.

coreutils

The Redox coreutils.

@Mojo4242 Simplified dd . Details here.

. Details here. @jackpot51 Added chown and updated Cargo.lock . Details here.

and updated . Details here. @jackpot51 Allow empty gid or uid . Details here.

or . Details here. @jackpot51 Updated chown . Details here.

. Details here. @Mojo4242 Cleaned up dead code. Details here.

@Mojo4242 Fixed status option on dd . Details here.

. Details here. @Tommoa Made a performance improvement for cat without arguments. Details here.

without arguments. Details here. @jackpot51 Used more commands from uutils . Details here.

extrautils

Extra utilities for Redox (and Unix systems).

@jackpot51 Used cksum from uutils . Details here.

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.