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::boxedtoalloc::boxed. Details here. - @ids1024 Made the
envscheme returnENOENTon 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
echowhen doingfoo >> bar. Details here. - @mmstick Enabled the handling of
Ctrl + Cwith 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
Iteratoroncalc’stokenize(). Details here. - @mmstick Implemented the changing of key bindings with
set -oadding 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
exportinto 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+Csignal 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
SIGINTcontrol flow logic abortion. Details here. - @mmstick
Ctrl+Cnow clears multi-line prompts. Details here. - @mmstick Implemented length methods for strings. Details here.
Drivers
- @TheSchemm Added
$DEVIDand$VENIDas arguments to pass to driver inpcid. Details here. - @TheSchemm Refactored
ihdadand 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
newfield inconc::Atomic::*_rawarguments. Details here. - @ticki Fixed a segfault in
conccaused 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
concs deallocation whenjemallocis used. Details here.
Netstack
- @ids1024 Corrected
fpath()fortcpd. Details here. - @ids1024 Fixed a bug in
tcps 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
dashandrecipesuse/bin/shand/bin/ccion scripts. Details here. - @ids1024 Added initial recipe for
cargo! Details here. - @ids1024 Added the
ca-certificatesrecipe. Details here. - @ids1024 Added cURL recipe. Details here.
- @jackpot51 Removed
libc-artifactsand a cross compiler is required. Details here. - @jackpot51 Set the format to
tar.gzfor all packages. Details here. - @jackpot51 Now the unstripped binaries are being kept in the target directory. Details here.
- @jackpot51 Moved
xargo-hometoxargoand enabled cross compiler. Details here. - @jackpot51 Moved
uutilsback 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
pbrcrate. Details here. - @ids1024 Switched to
BufReaderin the gzip archives extraction. Details here. - @AgostonSzepessy Added a
TARGETenvironment variable for TravisCI. - @ids1024 Set
clapfor argument parsing and also added a--targetargument to choose which target to download packages for to thepkgutility. 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.