This Week in Redox 33
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
xargoisn’t already installed before trying to install. Details here. - @jackpot51 Switched to
smolnetd. Details here. - @dlrobertson Implemented a change to keep debug info in a
.symfile. Details here. - @TSleepingCat Removed broken old kernel link. Details here.
- @sajattack Added
cmakedependency tobootstrap.sh. Details here.
Bootloader
Redox OS Bootloader.
- @jackpot51 Updated to RedoxFS 3. Details here.
Book
The Redox book.
- @covercash2 Listed
cmakeas a dependency. Details here.
Kernel
The Redox microkernel.
- @jackpot51 Added
fchownandfchmod. Details here. - @jackpot51 Released version
0.1.32. Details here. - @dlrobertson Made a change to prevent discarding the
.debugsection. Details here. - @dlrobertson Added documentation on using
gdb. 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
rustfmtand closed #602. Details here. - @Sag0Sag0 Added builtin
status. Details here. - @AgustinCB Tested and refactored array methods. Details here.
- @Sag0Sag0 Added the
boolbuiltin. Details here. - @Sag0Sag0 Added the
isbuiltin. Details here. - @mmstick Re-enabled empty strings and allowed empty outputs. Closing #611 and #573. Details here.
- @dlrobertson Updated the
disowncommand. Details here. - @AgustinCB Added
split_atto the manual. Details here. - @AgustinCB Merged
unescapemethods. Details here. - @AgustinCB Added functions to the manual. Details here.
- @dlrobertson Improved bad argument parsing of
setup.ion. Details here. - @mmstick Stopped liner’s background thread in the children of a fork. Details here.
- @mmstick Reverted
forkChanges. Details here. - @mmstick Fixed the
not/and/orbuiltins 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. - @mmstick Applied
rustfmt. Details here. - @mmstick Fixed some endlessly-looping alias expansions, resolving problems with
alias ls = ls --color. 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. - @Sag0Sag0 Added manual pages for almost all builtins. Details here.
- @Sag0Sag0 Added ability for
whichbuiltin 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. - @mmstick Added a color namespace test. Details here.
- @covercash2 Made newlines in prompt display correctly. Details here.
- @Sag0Sag0 Added tests for the
isbuiltin. Details here. - @mmstick Updated
rustfmtconfig. Details here. - @jD91mZM2 Disowned using
&!. Details here. - @AgustinCB Fixed panic on heredoc. Details here.
- @jD91mZM2 Updated
rust-xdgURL inCargo.toml. 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
ransidforvesad. Details here. - @jackpot51 Removed debug statements. Details here.
- @ghatdev Fixed error
E0133onpcid. Details here.
Cookbook
A collection of package recipes for Redox.
- @sajattack Added recipes for
libzipandlibpng. Details here. - @sajattack Fixe the
xzrecipe. Details here. - @raw-bin Fix miscellaneous problems with the
xzrecipe causing Redox build failures. Details here. - @sajattack Added recipe for
cmatrix. Details here and here. - @xTibor Added recipes for
TiMidity++andGeneralUser GS. Details here. - @jackpot51 Replaced
cargobranch. Details here. - @xTibor Fixed
ffmpegpackage version. Details here. - @sajattack Added recipe for
netdb. Details here. - @jackpot51 Added dependency directories for
curl. Details here. - @jackpot51 Added the
asyncflag for thesdlrecipe. Details here. - @jackpot51 Updated the
sdlpatch. Details here. - @jackpot51 Disabled some CPU optimizations that may break machines. Details here.
- @sajattack Added recipe for
cmatrixandterminfo. Details here. - @jackpot51 Updated the
sdlrecipe to require 32 bpp. Details here. - @xTibor Added the
ca-certificatesdependency to thegitrecipe. Details here. - @jackpot51 Added an
unfetchscript. Details here. - @jackpot51 Used
pollwithgit. Details here. - @xTibor Added an
ncurseswrecipe as well as someterminfochanges. Details here. - @xTibor Added
mdprecipe. 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_usersand 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. - @jackpot51 Released version 0.3.2. Details here.
- @jackpot51 Added
fchmodandfchown. Details here. - @jackpot51 Fixed error with borrowing packed fields. Details here.
syscall
Redox Rust Syscall Library.
- @jackpot51 Add
fchownandfchmodsystem 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_gidand fixed an empty user list issue. Details here. - @goyox86 Improved error handling using the
failurecrate. Details here.
userutils
User and group management utilities.
- @MggMuggins Implemented
groupaddand fixed forpasswdcompile. Details here. - @fraang Added missing included utility. Also added missing word. Details here.
- @goyox86 Migrated to the new errors on
rust_users. Details here. - @MggMuggins Add additional flags to
useraddandgroupadd. Also updated cargo files. Details here.
coreutils
The Redox coreutils.
- @Mojo4242 Simplified
dd. Details here. - @jackpot51 Added
chownand updatedCargo.lock. Details here. - @jackpot51 Allow empty
gidoruid. Details here. - @jackpot51 Updated
chown. Details here. - @Mojo4242 Cleaned up dead code. Details here.
- @Mojo4242 Fixed status option on
dd. Details here. - @Tommoa Made a performance improvement for
catwithout arguments. Details here. - @jackpot51 Used more commands from
uutils. Details here.
extrautils
Extra utilities for Redox (and Unix systems).
- @jackpot51 Used
cksumfromuutils. 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.
- @anxiousmodernman 🎂
- @bheesham 🎂
- @covercash2 🎂
- @FloVanGH 🎂
- @fraang 🎂
- @ghatdev 🎂
- @HarryU 🎂
- @jD91mZM2 🎂
- @liftedkilt 🎂
- @MggMuggins 🎂
- @raw-bin 🎂
- @sajattack 🎂
- @Sag0Sag0 🎂
- @TSleepingCat 🎂
- @Tommoa 🎂
If I missed something, feel free to contact me @goyox86 or send a PR to Redox website.