By goyox86 on

This is the 29th 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 again! Did you missed us?

We hope you did!

Anyways, I have good news for you: it was only me! Because the rest of the team was super busy making Redox even awesomer ;)

There is a lot of stuff packed on this one. So… Buckle up!

First things first: During my absence there were 3 new releases 0.3.1, 0.3.2 and 0.3.3 focused on better POSIX compatibility, improved ACPI support and lower memory usage respectively (Along many other things I’m gonna cover next).

We also have a new login window and a file dialog thanks to @jackpot51.

Other important news is that we are now maintaining the RustType crate, which can be found here, under the redox-os Github organization.

Let’s start the more detailed view with the kernel where we have the huge ACPI revamp done by @CWood1 which implements (among other things) a full fledged AML parser. Mr @jackpot51 was busy improving the debugging code, implementing events on pipe (which in turn adds up to mio s crate support AKA: this small sample now works in Redox). He also fixed the mapping of TLS (which now page aligned) as well as improved error information and cleaned the interrupt macros.

On the Ion front @glowing-chemist added support for polish notation, also, and thanks to @mmstick Ion now supports 8 color, 16 color, 256 color, and 24-bit color using standard ANSI encodings. He also added support for the $SWD and $MWD environment variables. A new exists builtin was added by @BafDyce and @nivkner made some refactoring on the match statements. But changes don’t stop there, read the details and you will see that there is a lot of other interesting stuff ni there!

The drivers saw a bunch of updates and fixes mostly by @jackpot51 who made some fixes to pcid , a change on Intel8254x network driver in order use a spin for reset instead of yielding along with the addition of a method for resizing display in bgad . He also disabled the XHCI driver due to lockups and removed some unused extern crate s statements.

The RedoxFS got some attention from @ids1024 who made it not an error to open a directory without O_DIRECTORY or O_STAT , and futimens not to require O_RWONLY/O_RDWR . Also, we are temporarily using a nightly friendly version of the spin crate.

TFS land was visited by @ticki and among the highlights are: the introduction of a new control-flow crate to control control-flow outside closures, a fix for several compile errors in atomic-hashmap , the addition of conc::Guard::{try,maybe}_map followed by the switch to parking_lot in conc .

The cookbook (our collection of packages) was also very active during this period! @7h0ma5 added recipes for ncurses and readline while @ids1024 added one for perl and @xTibor added ffmpeg . python was updated to a new version and a new --debug argument was added to cook.sh (the package builder). Last but no least! @AgostonSzepessy added support for dependency info to packages. Nice!

Also, there are big news in coreutils: We are now using coreutils versions of the utilities where it makes sense. For example: @ids1024 removed our versions of chmod , env , and ls opening room for the better versions on uutils (our fork of coreutils ). While all of that was being done, @dabbydubby was improving pwd ’s description, reformatting, restructuring and fixing few bugs in mv and afterwhile porting those changes over to cp .

Finally on the GUI side of things Orbital experienced bunch of unused code removal and improvement of z-buffering (by @jackpot51) while Orbtk saw the birth of a new file dialog, got the ability to convert an orbclient window into an orbtk one, the addition of borders around menu entries and some fixes on textbox’s scrolling.

Bonus: Few days ago we saw this message from @jackpot51 on the Redox chat: “Gentlemen, I am going to port libservo”. Yes! some libservo work is on the way <3

Bonus 2: I also woke up one day and saw this MESA fork.

Exciting times! Aren’t they? Stay tunned for more!

Kernel

The Redox microkernel.

@ids1024 Added support for arguments in #! . Details here.

. Details here. @jackpot51 Fixed the PIT. Details here.

@jackpot51 Made syscall a submodule. Details here.

a submodule. Details here. @CWood1 Fully implemented AML parser, and did many improvements to the ACPI infrastructure. Details here.

@jackpot51 Removed warnings, improved error information and cleaned up interrupt macros in ACPI. Details here.

@jackpot51 Fixed the mapping of TLS. It is now be page aligned. Details here.

@jackpot51 Implemented events on pipe, added syscall name debugging and update debugging code. Details here.

@ids1024 Commented out system call debug printing code. Details here.

@jackpot51 Updated debugging code. Details here.

@jackpot51 Changed unreachable to enosys . Details here.

to . Details here. @ids1024 Temporary overrode spin-rs . Details here.

. Details here. @jackpot51 Updated dependencies. Details here.

@jackpot51 Implemented a more efficient live filesystem method, reduce kernel heap to 64 MB and fixed an issue in build.rs . Details here.

. Details here. @L3nn0x Correct small bug in memcpy 32bits implementation. Details here.

Ion

The Ion Shell. Compatible with Redox and Linux.

@glowing-chemist Added support for polish notation. Details here.

@jwarner112 Reformatted the manual based on Rust book (2nd edition). Details here.

@BafDyce Fixed broken & missing links in documentation. Details here.

@mmstick Implemented string method plugins support. Details here.

@jackpot51 Fix Redox support. Details here.

@mmstick Added color namespace with 8 ⁄ 16 -bit color support. Details here.

⁄ -bit color support. Details here. @BafDyce Fixed syntax error in src/shell/variables.rs . Details here.

. Details here. @BafDyce Added the exists builtin. Details here.

builtin. Details here. @mmstick Enabled setting multiple color parameters. Details here.

@mmstick Implemented 256-bit colors support, colors are defined via hexadecimal values. IE: 4E or 4Ebg. Details here.

@mmstick Refactored, documented, and fixed a panic in colors. Details here.

@chrisvittal Changed time from builtin to a shell keyword. Details here.

from builtin to a shell keyword. Details here. @mmstick Added colors tests & enable decimal notation. The ‘c’ namespace is now a shorthand for ‘color’. Hexadecimal color notations now require to be prefixed with ‘0x’. Details here.

@BafDyce Implemented exists builtin command (#504). Details here.

builtin command (#504). Details here. @mmstick Implemented 24-bit true color support. Details here.

@mmstick Updated prompt. Details here.

@mmstick Implemented Ion docs launch support. We now have a setup.ion script for performing more advanced setup/installations. If the documentation is installed, it is accessible via the ion-docs builtin. This requires that the user specifies a BROWSER variable. . Details here.

docs launch support. We now have a script for performing more advanced setup/installations. If the documentation is installed, it is accessible via the ion-docs builtin. This requires that the user specifies a BROWSER variable. . Details here. @mmstick Implement $SWD and $MWD variables. SWD : Simplified Working Directory – the default that most prompts use and MWD : Minified Working Directory – the default that Fish uses. Details here.

and variables. : Simplified Working Directory – the default that most prompts use and : Minified Working Directory – the default that uses. Details here. @glowing-chemist Added a fallback to polish notation in calc. If the supplied expression doesn’t match standard notation, try Polish (prefix) notation. Details here.

@BafDyce Allowed user to prevent commands from being saved in history. Details here.

@BafDyce Fixed a small error in readme. Details here.

@drosseau Added a –version flag. Details here.

@mmstick Enhanced Assignment Parsing. Details here.

@mmstick Completed assignment type checking. Details here.

@mmstick Added methods documentation. Details here.

@mmstick Documented the new assignment logic. Details here.

@mmstick Completely revamped function & assignment parsing. Function assignments now work the same as assignments in general. Assignments now instead take the expanded value into consideration when comparing types and the pre-expanded value determines arrayness. Details here.

@mmstick Fixed a test. Details here.

@mmstick Add more unit tests to functions. Details here.

@mmstick Implemented case bindings support. Details here.

@mmstick Fixed array checks. Details here.

@mmstick Implemented conditional support with match cases. Details here.

@mmstick Refactored some work. Details here.

@bb010g Set rust-toolchain for latest nightly. Details here.

@nivkner Refactored match statements. Details here.

statements. Details here. @nivkner Made a change to distinguish between environment and local variables. Details here.

@nivkner Re-enabled ignoring commands in history. Details here.

@chrisvittal Changed time from builtin to shell keyword. Details here.

@jackpot51 Used fork of app-dirs-rs with support for Redox. Details here.

@mmstick Protected vars & improved assignment errors. Details here.

@mmstick Addressed compiler warnings. Details here.

@mmstick Disabled namespace plugins by default. Details here.

@mmstick Disabled plugins for root. Details here.

@aeosynth Updated README.md . Details here.

. Details here. @aeosynth Updated README.md as nightly is required for compiling. Details here.

as nightly is required for compiling. Details here. @KaKnife Updated build.rs (#553)

Nightly is required for compiling. Details here.

@jackpot51 Updated Redox support. Details here.

@jackpot51 Fixed Redox watch_foreground . Details here.

. Details here. @mmstick Applied rustfmt-nightly across the entire project. Details here.

across the entire project. Details here. @mmstick Applied more further rustfmt improvements. Details here.

improvements. Details here. @mmstick Made a change so public items now have crate-level visibility. Details here.

@nivkner use c_char for plugin arguments instead of i8 . Details here.

Drivers

Redox OS Drivers

@jackpot51 Updated mut usage in vesad . Details here.

usage in . Details here. @jackpot51 Updated config.rs in pcid . Details here.

in . Details here. @jackpot51 Updated main.rs in pcid . Details here.

in . Details here. @jackpot51 Used a spin for reset, do not yield in the Intel8254x . Details here.

. Details here. @jackpot51 Added the ability to query BGA . Details here.

. Details here. @jackpot51 Added method for resizing display in bgad . Details here.

. Details here. @jackpot51 Disabled the XHCI driver due to lockups. Details here.

driver due to lockups. Details here. @jackpot51 Removed unused extern crate . Details here.

. Details here. @jackpot51 Removed unnecessary extern crate . Details here.

. Details here. @jackpot51 Fixed static on the Intel HDA driver. Details here.

Redoxfs

The Redox Filesystem

@ids1024 Made it not an error to open a directory without O_DIRECTORY or O_STAT . Details here.

or . Details here. @ids1024 futimens : do not require O_RWONLY/O_RDWR . Details here.

: do not require . Details here. @jackpot51 Updated Cargo.lock. Details here.

@ids1024 Removed unused import causing lint. Details here.

@jackpot51 Used nightly friendly spin. Details here.

TFS

Next Generation File System

@ticki Fix several compile errors in atomic-hashmap . Details here.

. Details here. @ticki Added conc::Guard::{try,maybe}_map . Also added tests for it and Guard::new et al. Details here.

. Also added tests for it and et al. Details here. @ticki Introduced control-flow , a crate to control control-flow outside closures. Details here.

, a crate to control control-flow outside closures. Details here. @ticki Added defer!() as shortcut for defer!(()) in control-flow . Details here.

as shortcut for in . Details here. @ticki Switch conc to parking_lot Mutex instead of spin locks. Details here.

to Mutex instead of spin locks. Details here. @ticki Fixed some compile errors in atomic-hashmap . https://twitter.com/ticki_/status/901478579925602304. Details here.

. https://twitter.com/ticki_/status/901478579925602304. Details here. @ticki Removed the last errors and warnings from atomic-hashmap . Details here.

Cookbook

A collection of package recipes for Redox.

@ids1024 Patched patch to not to call chown . Details here.

to not to call . Details here. @ids1024 Passed -p to cp, to make running autotools unnecessary. Details here.

@7h0ma5 Added a recipe for ncurses . Details here.

. Details here. @7h0ma5 Added a recipe for readline . Details here.

. Details here. @ids1024 Added symlinks to uutils package. Details here.

package. Details here. @Nickforall Fixed ncurses failing to compile. Details here.

failing to compile. Details here. @ids1024 Simplified git patch a bit. Details here.

a bit. Details here. @ids1024 Added --debug argument to cook.sh in order to build in debug mode, unstripped. Details here.

argument to in order to build in debug mode, unstripped. Details here. @ids1024 Used release tarball for curl , with a couple patches. Details here.

, with a couple patches. Details here. @ids1024 Bumped python version. Details here.

version. Details here. @jackpot51 Added -i to autoreconf for curl . Details here.

to for . Details here. @ids1024 Added a recipe for perl . Details here.

. Details here. @ids1024 Made a couple of fixes for Perl, and added initial recipes for automake and autoconf . Details here.

and . Details here. @jackpot51 Pulled forked pastel . Details here.

. Details here. @xTibor Added ffmpeg recipe. Details here.

recipe. Details here. @xTibor Removed unnecessary disable ffmpeg flags. Details here.

flags. Details here. @jackpot51 Use -unknown for gcc and g++ . Details here.

for and . Details here. @xTibor Switched ffmpeg to a working release branch, fixed hardcoded arch. Details here.

to a working release branch, fixed hardcoded arch. Details here. @jackpot51 Fixed tabulation, allowed recipe override of DEBUG . Details here.

. Details here. @jackpot51 Added slashes after source and build to support symlinks. Details here.

@AgostonSzepessy Added support for dependency info to packages. Details here.

Userutils

User and group management utilities.

@jackpot51 Updated Cargo.lock and Cargo.toml. Details here.

@andre-richter Fixed unused extern crates. Details here.

Coreutils

The Redox coreutils.

@jackpot51 Removed extra mut in tr . Details here.

in . Details here. @ids1024 Remove chmod , env , and ls , which uutils has better versions of. Details here.

, , and , which has better versions of. Details here. @jackpot51 Updated Cargo.lock and Cargo.toml. Details here.

@jackpot51 Fixed extern crate s everywhere. Details here.

s everywhere. Details here. @dabbydubby Changed pwd ’s description from “return working directory name” to “print working directory”. Details here.

’s description from “return working directory name” to “print working directory”. Details here. @ids1024 Used the released version of filetime . Details here.

. Details here. @dabbydubby Reformatted, restructured and fixed few bugs in mv . Details here.

. Details here. @dabbydubby Ported changes from mv.rs to cp.rs. Details here.

Netstack

Redox OS network stack.

@jackpot51 Updated Cargo.lock. Details here.

@jackpot51 Added debug messages and updated lock file. Details here.

@jackpot51 Made a change to send events on connect in tcpd . Details here.

. Details here. @jackpot51 Updated dependencies and a better implementation of C socket. Details here.

Netutils

Network Utilities for Redox.

@ids1024 Use pbr for wget ’s progress bar. Details here.

for ’s progress bar. Details here. @jackpot51 Updated Cargo.lock and Cargo.toml. Details here.

@jackpot51 Removed unused import in telnetd . Details here.

. Details here. @jackpot51 Added debug implementations. Details here.

Extrautils

Extra utilities for Redox (and Unix systems).

@bblancha Added support for tar for processing symlinks. Details here.

for processing symlinks. Details here. @ids1024 Added support for tar to set file times. Details here.

to set file times. Details here. @ids1024 Tried to fix travis by installing liblzma . Details here.

. Details here. @ids1024 Installed lzma with no-sudo method. Details here.

with method. Details here. @ids1024 Added support for bzip2 extraction in tar. Details here.

extraction in tar. Details here. @jackpot51 Updated Cargo.lock and Cargo.toml. Details here.

@jackpot51 Updated lock file. Details here.

@jackpot51 Patched termion to fix less . Details here.

. Details here. @jackpot51 Update libpager . Details here.

. Details here. @jackpot51 Update to new termion . Details here.

Orbital

Redox Windowing and Compositing System.

@jackpot51 Removed mut s. Details here.

s. Details here. @jackpot51 Removed unnecessary mut s. Details here.

s. Details here. @ids1024 Added scheme to PATH . Details here.

. Details here. @jackpot51 Updated Cargo.lock. Details here.

@jackpot51 Made some work on zbuffer support. Details here.

@jackpot51 Fixed zbuffer calculation. Details here.

@jackpot51 Replace front with first for Vec . Details here.

. Details here. @jackpot51 Fixed some rendering issues. Details here.

@ids1024 Removed unused imports that were triggering a lint. Details here.

@jackpot51 Removed the background from config. Details here.

Orbtk

The Orbital Widget Toolkit. Compatible with Redox and SDL2.

@jackpot51 Fixed some list bugs. Details here.

@jackpot51 Added a WIP of a file dialog example. Details here.

@jackpot51 Added the ability to convert an orbclient window into an orbtk one. Also fixed list logic. Details here.

window into an one. Also fixed list logic. Details here. @jackpot51 Removed prints. Details here.

@jackpot51 Added a file open dialog. Details here.

@jackpot51 Released 0.2.21. Details here.

@jackpot51 Updated documentation. Details here.

@jackpot51 Released 0.2.22. Details here.

@jackpot51 Fixed docs badge. Details here.

@jackpot51 Added borders around menu entries. Details here.

@jackpot51 Fixed textbox scrolling. Details here.

@jackpot51 Released 0.2.25. Details here.

@jackpot51 Removed print. 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.

Andre Richter 🎂

Brayden 🎂

Bob Sun 🎂

Christopher Vittal 🎂

Fabian Würfl 🎂

Jacob Humphrey 🎂

James Campos 🎂

Jeff Warner 🎂

Jonathan 🎂

Josh Leverette 🎂

Ken Reese 🎂

Mihal Malostanidis 🎂

nivkner 🎂

Oliver Smith 🎂

Thomas Gatzweiler 🎂

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