This Week in Redox 23
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
toalloc::boxed
. Details here. - @ids1024 Made the
env
scheme returnENOENT
on non-existent. Also added support forunlink()
. 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. - @mmstick Fixed bug in
echo
when doingfoo >> bar
. Details here. - @mmstick Enabled the handling of
Ctrl + C
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. - @mgmoens Implemented proper glob parsing. Details here.
- @mmstick Made use of
Iterator
oncalc
’stokenize()
. Details here. - @mmstick Implemented the changing of key bindings with
set -o
adding support for vi and emacs key bindings. Details here. - @huntergoldstein Refactored
Index
, etc. intoSelect
,Range
, andIndex
. 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. - @mmstick Implemented implicit
cd
. 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. - @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!()
withwriteln!(stderr())
. Details here. - @mmstick Implemented
SIGINT
control flow logic abortion. Details here. - @mmstick
Ctrl+C
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 inpcid
. 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 inconc::Atomic::*_raw
arguments. Details here. - @ticki Fixed a segfault in
conc
caused by a silent type coercion. Details here. - @ticki Renamed
conc::gc()
toconc::try_gc()
and introduceconc::gc()
for forced, deterministic GCs. Details here. - @ticki If tick triggers GC, it should call
conc::try_gc()
notconc::gc()
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 whenjemalloc
is used. Details here.
Netstack
- @ids1024 Corrected
fpath()
fortcpd
. 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
andrecipes
use/bin/sh
and/bin/cc
ion scripts. Details here. - @ids1024 Added initial recipe for
cargo
! Details here. - @ids1024 Added the
ca-certificates
recipe. Details here. - @ids1024 Added cURL recipe. Details here.
- @jackpot51 Removed
libc-artifacts
and a cross compiler is required. Details here. - @jackpot51 Set the format to
tar.gz
for all packages. Details here. - @jackpot51 Now the unstripped binaries are being kept in the target directory. Details here.
- @jackpot51 Moved
xargo-home
toxargo
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. - @ids1024 Switched to
BufReader
in the gzip archives extraction. Details here. - @AgostonSzepessy Added a
TARGET
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 thepkg
utility. Details here
Look and Feel
@xTibor Added a new login screen background! 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.
- 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.