This Week in Redox 25
By goyox86 on
This is the 25th 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!
What’s new in Redox?
TL;DR
Big news this week: We released 0.3.0.It is a big release including many improvements notably the Cookbook based build system and a new ACPI stack. Go read the announcement!
Now to this weeks summary: We shipped a couple of changes to the bootstrap script and the cookbook that should make the on-boarding on macOS smooth again. Go ahead try and give us feedback <3.
The kernel was very active this week, particularly with the landing of the initial support for signals by @jackpot51! Also, a new API for specifying custom memory allocators and changes in the alloc
crate API landed in nightly so the kernel had to be updated. Mr @CWood1 added an HPET (High Precision Event Time) driver to the kernel and also moved the PIT (Programmable Interval Timer) driver from the bootloader to the kernel as part of his ongoing work on ACPI. @ids1024 shipped some fixes to kernel’s dup2()
and exec()
too.
Ion impressive streak continues mainly propelled (but no limited to) by @mmstick and @huntergoldstein. Ion’s biggest highlight this week? The completion of job control and addition of the fg
builtin command! Also asynchronous history writing, the addition of an array!
macro to ease the creation of inline Array
s in Ion’s codebase, initial support for herestrings, the extraction of calc
to it’s own crate, refactoring to signal handling, forking, the reimplementation of pipelines::collect
into a recursive descendent parser, set -x
’s implementation and many fixes. You should try it , works in Linux too ;).
Drivers had to also be updated to the new alloc
API (mainly vesad
). Coreutils now have a base64
command by @goyox86, a new shiny dirname
command along with recent support for rm
for the -f
flag thanks to @ids1024.
Other important highlight is the addition of initial mtime/ctime
support and the implementation of futimens
in Redoxfs.
Last but not least the cookbook saw a lot of activity with a new system for compile-time dependencies by @ids1024 and package recipes for git
, gawk
, findutils
, GNU sed
, pastel
, nasm
, rustual-boy
.
Kernel
- https://github.com/CWood1 Added an HPET (High Precision Event Time) driver to the kernel and also moved the PIT (Programmable interval timer) driver from the bootloader to the kernel.
- @ids1024 Made
dup2()
work even if second file descriptor doesn’t exist. Details here. - @ids1024 Made a fix for
process::exec()
by stripping whitespaces after shebangs. Details here. - @ids1024 Made a fix for
process::exec()
and now it passes the relative, not canonicalised, path to scripts. Details here. - @ids1024 Made
pipe::read()
return when write end is closed (but it was afterwards reverted). Details here. - @jackpot51 Updated the kernel to the new Rust allocator API. Details here.
- @jackpot51 Implemented passthrough of futimens . Details here.
- @jackpot51 Added the initial implementation of signal handling. Details here.
- @jackpot51 Allowed simple signal delivery to PID 1 (the kernel idle process). 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.
- @mmstick Ensured the termination of pipes and jobs. Details here.
- @z3ntu Updated
version_check
to 0.1.3. Details here. - @huntergoldstein Made
Test
able to interpret the empty string along with a big refactor. Details here. - @mmstick Implemented async history writing with his
liner
until the async work gets mainstreamed toliner
. Details here. - @huntergoldstein Made tilde now properly expand inside a normal word. Details here.
- @huntergoldstein Added support for resolved quotes not being an escaped character. Details here.
- @mmstick Documented
Shell
structure. Details here. - @clippix Fixed the build by changing the type of a field in
Shell
toOption
. Details here. - @huntergoldstein Added an
array!
macro for creating inlineArray
s. Details here. - @huntergoldstein Made tildes now part of normal tokens. Details here.
- @huntergoldstein Support for herestrings and heredocs is now completed. Details here.
- @jackpot51 Made a small fix to
shell::pipe()
. Details here. - @huntergoldstein Fixed autocompletion for partially escaped filenames. Details here.
- @huntergoldstein Updated example in README to reflect tilde expansion rules. Details here.
- @huntergoldstein Added a warning when a script completes with a statement in memory. Details here.
- @mmstick Completed Job Control:
fg
works now! Details here. - @mmstick Refactored signals code. Details here, here and here.
- @mmstick Refactored forking code. Details here.
- @mmstick Fixed signal ignoring with
cat /dev/urandom | head
. Details here. - @huntergoldstein Rewrote
pipelines::collect
to be a recursive descent parser. Details here. - @mmstick Made background jobs display command arguments. Details here.
- @mmstick Implement
set -x
. Details here. - @mmstick Re-enabled ability to break control flow when signalled. Details here.
- @mgmoens Extracted
calc
to it’s own crate. Details here.
Drivers
- @jackpot51 Updated
vesad
to the newalloc
API and added agitignore
. Details here.
Redoxfs
- @jackpot51 Removed unnecessary feature gate for associated constants. Details here.
- @jackpot51 Added initial
mtime/ctime
support. Details here. - @jackpot51 Add times to stat. Details here.
- @jackpot51 Implemented
futimens
. Details here. - @ids1024 Made a fix for
fcntl
preventing it from clobbering access mode. 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 Made an update to
parking_lot
andowning_ref
inchasmap
and a added some docs tosync::Treiber
. Details here. - @ticki Added a debug assertion against faulty hazards. Details here.
Coreutils
- @jackpot51 Fixed the formatting of symlink in long mode in
ls
. Details here. - @ids1024 Made a fix to
stat
in order to format time properly and display user and group name. Details here. - @ids1024 Made
touch
to use thefiletime
crate. Details here. - @goyox86 Corrected the
filetime
dependency so it points to the mainstream repo. Details here. - @ids1024 Added the
-f
argument torm
. Details here. - @goyox86 Removed some unneeded code in
uptime
. Details here. - @ids1024 Added the
dirname
command. Details here. - @goyox86 Added the
base64
command. Details here.
Cookbook
The cookbook the collection of package recipes of Redox.
- @ids1024 Added a system for compile-time dependencies; (used in
openssl
). Details here. - @ids1024 Added a
git
recipe. Details here. - @xTibor Added
rustual-boy
package recipe. Details here. - @ids1024 Fixed
repo.sh
call for build dependencies. Details here. - @ids1024 Remove some unneeded code in the python recipe. Details here.
- @ids1024 Added a recipe for
gawk
. Details here. - @goyox86 Added some code in the cookbook system to determine tools at runtime and fix macOS build. Details here.
- @ids1024 Added a recipe for GNU
sed
. Details here. - @ids1024 Added a recipe for uutils
findutils
. Details here. - @jackpot51 Add a recipe for
pastel
. Details here. - @7h0ma5 Added a recipe for
nasm
. 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.
- Luca Weiss 🎂
- Thomas Gatzweiler 🎂
If I missed something, feel free to contact me (goyox86) or send a PR to Redox website.