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
xargo
isn’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
.sym
file. Details here. - @TSleepingCat Removed broken old kernel link. Details here.
- @sajattack Added
cmake
dependency tobootstrap.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
andfchmod
. Details here. - @jackpot51 Released version
0.1.32
. Details here. - @dlrobertson Made a change to prevent discarding the
.debug
section. 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
rustfmt
and closed #602. Details here. - @Sag0Sag0 Added builtin
status
. Details here. - @AgustinCB Tested and refactored array methods. Details here.
- @Sag0Sag0 Added the
bool
builtin. Details here. - @Sag0Sag0 Added the
is
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. - @AgustinCB Added
split_at
to the manual. Details here. - @AgustinCB Merged
unescape
methods. 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
fork
Changes. Details here. - @mmstick Fixed the
not/and/or
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. - @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
which
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. - @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. - @mmstick Updated
rustfmt
config. Details here. - @jD91mZM2 Disowned using
&!
. Details here. - @AgustinCB Fixed panic on heredoc. Details here.
- @jD91mZM2 Updated
rust-xdg
URL 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
ransid
forvesad
. Details here. - @jackpot51 Removed debug statements. Details here.
- @ghatdev Fixed error
E0133
onpcid
. Details here.
Cookbook
A collection of package recipes for Redox.
- @sajattack Added recipes for
libzip
andlibpng
. Details here. - @sajattack Fixe the
xz
recipe. Details here. - @raw-bin Fix miscellaneous problems with the
xz
recipe 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
cargo
branch. Details here. - @xTibor Fixed
ffmpeg
package version. Details here. - @sajattack Added recipe for
netdb
. Details here. - @jackpot51 Added dependency directories for
curl
. Details here. - @jackpot51 Added the
async
flag for thesdl
recipe. Details here. - @jackpot51 Updated the
sdl
patch. Details here. - @jackpot51 Disabled some CPU optimizations that may break machines. Details here.
- @sajattack Added recipe for
cmatrix
andterminfo
. Details here. - @jackpot51 Updated the
sdl
recipe to require 32 bpp. Details here. - @xTibor Added the
ca-certificates
dependency to thegit
recipe. Details here. - @jackpot51 Added an
unfetch
script. Details here. - @jackpot51 Used
poll
withgit
. Details here. - @xTibor Added an
ncursesw
recipe as well as someterminfo
changes. Details here. - @xTibor Added
mdp
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. - @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
fchmod
andfchown
. Details here. - @jackpot51 Fixed error with borrowing packed fields. Details here.
syscall
Redox Rust Syscall Library.
- @jackpot51 Add
fchown
andfchmod
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. - @goyox86 Improved error handling using the
failure
crate. Details here.
userutils
User and group management utilities.
- @MggMuggins Implemented
groupadd
and fixed forpasswd
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. - @MggMuggins Add additional flags to
useradd
andgroupadd
. Also updated cargo files. Details here.
coreutils
The Redox coreutils.
- @Mojo4242 Simplified
dd
. Details here. - @jackpot51 Added
chown
and updatedCargo.lock
. Details here. - @jackpot51 Allow empty
gid
oruid
. 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
cat
without arguments. Details here. - @jackpot51 Used more commands from
uutils
. Details here.
extrautils
Extra utilities for Redox (and Unix systems).
- @jackpot51 Used
cksum
fromuutils
. 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.