This Week in Redox 24
By goyox86 on
This is the 24th 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
Welcome to another edition of “This Week in Redox”! Without further preamble let’s dive in!
Starting with the kernel land @jackpot51 started work on signals as this is needed for one of cargo
’s dependencies. Also @ids1024 Implemented the getppid
system call. There was not much activity on the drivers side of things, only a fix for seek flags handling on the Intel HDA audio driver by @xTibor.
The folks of Ion specially @huntergoldstein have been on fire! Shipping a ton of stuff: adding sub-expressions, convenience methods @graphemes(..)
, @bytes(..)
and @chars(..)
supporting different ways of iterating strings. Also, the addition of a really nice match-case construct to the grammar. @mmstick along with @myfreeweb have been working on Ion’s job control facility on things like adding support for process groups, handling of SIGTERM
and SIGTSTP
and the addition of bg
, wait
and jobs
builtin commands.
On TFS @ticki reenabled jemalloc as it was not the cause of this bug. Something worth to mention is that we are currently having a sneaky segfault in one of the conc::sync::treiber
tests, maybe you reading this have the fix and we don’t now it!? ;) Jump in!
What about coreutils? Well, the uptime
and readlink
commands were added as well as a bunch of fixes and improvements for stat
. netutils’s httpd
was switched to the Hyper crate and the cookbook has seen the birth of a Python language recipe by @ids1024. In pkgutils the pkg
continues to evolve steadily. Where you wondering what @jackpot51 has been doing? The answer is: starting the work on UEFI support! You can take a look here and here. Rust libstd
support for UEFI? Yes that too! (WIP though). And last but not least @ids1024 continues his work on GSoC trying to make Redox self-hosting! Notably his work on adding symlinks support to redoxfs.
What’s new in Redox?
Kernel
- @jackpot51 Started the work on signals. Details here.
- @bjorn3 Fixed a lot of lint warnings. Details here.
- @ids1024 Implemented the
getppid
system call. Details here. - @ids1024 Fixed a bug in the
clone
system call. 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.
- @huntergoldstein Added arithmetic sub-expressions to Ion’s syntax. Details here.
- @mmstick Converted
@[]
to@()
. Details here. - @huntergoldstein Removed an extra read increment in glob branch. Details here.
- @huntergoldstein Empty argument slice now results in empty command. Details here.
- @huntergoldstein Added
@graphemes(..)
,@bytes(..)
and@chars(..)
for improved string iteration. Details here. - @jdanford Fixed some grammar issues on the README. Details here
- @huntergoldstein Refactored
array_expand
(and squashed bug). Details here. - @huntergoldstein Made
Shell::readln
to complete to a file name if the last word is a file. Details here. - @mmstick Added documentation to
shell::completer
. Details here. - @mmstick Implemented explicit array assignments. Details here.
- @mmstick Updated the README to display explicit array syntax. Details here.
- @huntergoldstein Made possible to pass an empty string to commands, functions, etc. Details here.
- @MovingtoMars Updated
liner
andpeg
dependencies. Details here. - @huntergoldstein Introduced a match-case construct to Ion’s grammar. Details here.
- @huntergoldstein Fixed executables completion. Details here.
- @MovingtoMars Updated dependencies to fix a bug with
liner
in vi mode. Details here. - @mmstick Implemented SIGTERM handling. Details here.
- @huntergoldstein Forced
run_examples.sh
to use project root as working directory. Details here. - @jwbowen Updated the minimum
rustc
version requirement. Details here. - @mmstick Implemented SIGTSTP (Ctrl+Z) handling and wait/jobs/bg builtins. Details here.
- @mmstick Started the work on
fg
. Details here. - @myfreeweb Added more work on job control and fixed a pid bug. Details here.
- @mmstick Added support for monitoring child with
waitpid
and forking shell with with background jobs. Details here. - @mmstick Did some work on storing configurations in the correct XDG app dir. Details here.
- @huntergoldstein Fixed a broken Redox build. Details here.
- @mmstick Added support for creating initrc and history files if they don’t exist. Details here.
Drivers
Redoxfs
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 Brought back jemalloc into
conc
(turns out it was not a bug in jemalloc). Details here. - @ticki Fixed the
conc::sync::treiber::tests::increment
test, which previously was looping infinitely. Details here. - @ticki Added a test for nested
conc::Atomic
. Details here. - @ticki Introduced
conc::Atomic::destroy_no_guard()
for no-overhead destruction of the atomic. Details here. - @ticki Fixed the destructor of
conc::sync::treiber
, which previously was double dropping. Details here. - @ticki Made a fix to prevent calling destructors on null pointers in
conc::sync::treiber
. Details here. - @ticki Made a change to ensure that
conc::Treiber::drop
doesn’t cause double-drop of the inner. Details here. - @ticki Added a test for
conc::Atomic<()>
. Details here. - @ticki Provide a message on why
conc::Guard
ismust_use
. Details here. - @ticki Removed some warnings in
conc
. Details here. - @ticki Updated
parking_lot
andowning_ref
inchasmap
. Details here.
Coreutils
- @goyox86 Added the
uptime
command. Details here. - @ids1024 Added the
readlink
command. Details here. - @ids1024 Improved the
stat
command. Details here. - @ids1024 Made
stat
useO_NOFOLLOW
. Details here. - @sebastianpfluegelmeier Added support for
ls
columned output. Details here. - @ids1024 Made
stat
uselibstd
instead of system calls. Details here.
Netutils
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 Added a system for compile-time dependencies (needed for openssl). Details here.
- @ids1024 Updated
gcc
anddash
recipes to create symlinks. Details here. - @ids1024 Added a recipe for Python. Details here.
- @ids1024 Made a change to forward the target to
pkg
. Details here.
Pkgutils
The pkgutils are a set of utilities for package management on Redox.
- @ids1024 Added support for determining the default target based on LLVM triple at build. Details here.
- @ids1024 Prevented the following of symbolic links when creating packages. Details here.
- @ids1024 Improved the error handling in
pkg
. Details here. - @ids1024 Added a
--root
argument topkg
also now the help message is printed when no subcommand. 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.
- clippix 🎂
- goyox86 🎂
- myfreeweb 🎂
If I missed something, feel free to contact me (goyox86) or send a PR to Redox website.