By goyox86 on

This is the 23rd 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 or our Discourse forum!

TL;DR

The way Redox is built has changed, mainly by two things. First, a new Docker based build process was added! You can try it following these instructions. Big kudos to @batonius for his work on this! If you decide to use the usual build process you will need the cross-compiler and toolchain in order to build Redox. Ubuntu packages and Arch recipes are available. See instructions here.

@ids1024 wrote the first GSoC status report on the self-hosting effort. Feel free to take a look, exciting stuff!

We have a new Mastodon account!

This week we start the code tour by making a stop in the bootloader which can now read RedoxFS partitions meaning that the kernel can be now in the filesystem. In the kernel the big news is the addition of an AML tables parser written by @CWood1 who has been doing an amazing work on the ACPI support. The preemption was re-enabled in the kernel also. Drivers land got more work from @TheSchemm and the Intel HDA audio driver was refactored and now supports QEMU. The Ion folks were pretty busy too! They added support to emacs and vi key bindings, optionally-typed function parameters, implicit cd , multiple assigments, length methods for strings. Also Ion’s calc command now supports a bunch more bitwise operations. All of that without mentioning a ton of fixes and refactoring! On the TFS side of things @ticki had a fun week sponsored by silent type coercions and deadlocks in jemalloc, but despite those bugs (which are now fixed), work in garbage collection was done. The Netstack’s TCP daemon got few fixes that were affecting HTTPS in cURL. The cookbook saw the addition of a ca-certificates recipe and tar.gz is now used in all packages in both the cookbook and pkgutils. Something that is super exciting is the progress made by @ids1024 on the cargo recipe <3. Last but not least we have a new login screen background!

What’s new in Redox?

Bootloader

@jackpot51 Added RedoxFS driver to the bootloader. Details here.

Kernel

@jackpot51 Reenabled preemption. Details here.

@jackpot51 Continued work on symbol names demangling. Details here.

@CWood1 Added an AML parser. Details here.

@jackpot51 Switched from collections::boxed to alloc::boxed . Details here.

to . Details here. @ids1024 Made the env scheme return ENOENT on non-existent. Also added support for unlink() . Details here.

Ion

Ion is a shell for UNIX platforms, and is the default shell in Redox. It is still a work in progress, but much of the core functionality is complete. It is also currently significantly faster than Bash, and even Dash, making it the fastest system shell to date.

@mgmoens Added ² and ³ to calc . Details here.

. Details here. @mmstick Fixed bug in echo when doing foo >> bar . Details here.

when doing . Details here. @mmstick Enabled the handling of Ctrl + C with prompt. Details here.

with prompt. Details here. @mmstick Added support for retaining quoted backslashes. Details here.

@mgmoens Added support for bitwise AND, OR, LSHIFT, RSHIFT, NOT and modulo to calc . Details here and here.

. Details here and here. @mgmoens Implemented proper glob parsing. Details here.

@mmstick Made use of Iterator on calc ’s tokenize() . Details here.

on ’s . Details here. @mmstick Implemented the changing of key bindings with set -o adding support for vi and emacs key bindings. Details here.

adding support for vi and emacs key bindings. Details here. @huntergoldstein Refactored Index , etc. into Select , Range , and Index . Details here.

, etc. into , , and . Details here. @jwbowen Updated README.md to add vi/emacs keybindings as a feature. Details here.

@mmstick Implemented optionally-typed function parameters. Details here.

@huntergoldstein Moved export into the grammar. Details here.

into the grammar. Details here. @mmstick Implemented implicit cd . Details here.

. Details here. @mmstick Implemented multiple assigments. Details here.

@mmstick Implemented tilde expansions in tab completions. Details here.

@mmstick Implemented expansions in slice syntax. Details here.

@mmstick Fixed the parsing of variables. Details here.

@huntergoldstein Added support for braced array variables. Details here.

@mmstick Refactored script execution. Details here.

@mmstick Added initial Ctrl+C signal handling support. Details here.

signal handling support. Details here. @huntergoldstein Replaced manual bit flags with auto-generated bit flag construct. Details here.

@huntergoldstein Put the Tokio crates behind a cfg crate for Redox. Details here.

@mmstick Replaced eprintln!() with writeln!(stderr()) . Details here.

with . Details here. @mmstick Implemented SIGINT control flow logic abortion. Details here.

control flow logic abortion. Details here. @mmstick Ctrl+C now clears multi-line prompts. Details here.

now clears multi-line prompts. Details here. @mmstick Implemented length methods for strings. Details here.

Drivers

@TheSchemm Added $DEVID and $VENID as arguments to pass to driver in pcid . Details here.

and as arguments to pass to driver in . Details here. @TheSchemm Refactored ihdad and added QEMU support! Details here.

TFS

TFS is a modular, fast, and feature rich next-gen file system, employing modern techniques for high performance, high space efficiency, and high scalability.

@ticki Add notes on destruction of the new field in conc::Atomic::*_raw arguments. Details here.

field in arguments. Details here. @ticki Fixed a segfault in conc caused by a silent type coercion. Details here.

caused by a silent type coercion. Details here. @ticki Renamed conc::gc() to conc::try_gc() and introduce conc::gc() for forced, deterministic GCs. Details here.

to and introduce for forced, deterministic GCs. Details here. @ticki If tick triggers GC, it should call conc::try_gc() not conc::gc() because the other way is too slow. Details here.

not because the other way is too slow. Details here. @ticki Switched to the system memory allocator in order to fix an apparent deadlock in conc s deallocation when jemalloc is used. Details here.

Netstack

@ids1024 Corrected fpath() for tcpd . Details here.

for . Details here. @ids1024 Fixed a bug in tcp s partial reads that was breaking HTTPS in cURL. Details here.

Cookbook

The cookbook the collection of package recipes of Redox. The effort on self-hosting continues! And @ids1024 is working hard on a cargo recipe. How cool is that?

@ids1024 Now dash and recipes use /bin/sh and /bin/cc ion scripts. Details here.

and use and ion scripts. Details here. @ids1024 Added initial recipe for cargo ! Details here.

! Details here. @ids1024 Added the ca-certificates recipe. Details here.

recipe. Details here. @ids1024 Added cURL recipe. Details here.

@jackpot51 Removed libc-artifacts and a cross compiler is required. Details here.

and a cross compiler is required. Details here. @jackpot51 Set the format to tar.gz for all packages. Details here.

for all packages. Details here. @jackpot51 Now the unstripped binaries are being kept in the target directory. Details here.

@jackpot51 Moved xargo-home to xargo and enabled cross compiler. Details here.

to and enabled cross compiler. Details here. @jackpot51 Moved uutils back to recipes. Details here.

Pkgutils

The pkgutils are a set of utilities for package management on Redox.

@jackpot51 Made an update to use gzip in all package files. Details here. Update to use gzip for all package files

@ids1024 Switched progress bar based on the pbr crate. Details here.

crate. Details here. @ids1024 Switched to BufReader in the gzip archives extraction. Details here.

in the gzip archives extraction. Details here. @AgostonSzepessy Added a TARGET environment variable for TravisCI.

environment variable for TravisCI. @ids1024 Set clap for argument parsing and also added a --target argument to choose which target to download packages for to the pkg utility. Details here

Look and Feel

@xTibor Added a new login screen background! 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.

Agoston Szepessy 🎂

Hunter Goldstein 🎂

Jason Bowen 🎂

Jordan Danford 🎂

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