This Week in Redox 26
By goyox86 on
This is the 26th 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
Welcome back to a new edition of TWiR! We have a lot to share this time. Let’s get started!
A new reset facility and iopl
support were added by @jackpot51 to the kernel along the uname
infrastructure done by @ids1024 who also shipped a couple of fixes for pipes.
Ion continues on fire! Gaining a new contributor this week: @drosseau who shipped a ton of stuff including fixes for echo
, comparison operators and the range syntax. All of that with new features like the not
builtin and some general refactoring. Well done!
@mmstick has been also very busy this week with the starting the new Ion’s user manual. He also improved the recently added job control in conjunction with many bug fixes and refactorings.
Ion also received love from @huntergoldstein who added support for inline expressions in methods and made case statements implicitly ended.
On the land of the drivers there was not much activity: some improvements to the network drivers configuration and the splitting of pcid
’s configuration into initfs
and fs
by @jackpot51.
As part of his GSoC @ids1024 did some work on Redoxfs preventing permission related failures on file creation as well as a fix to unlink
(also related to permission handling).
What about TFS ? Well, @ticki was on fire this week! Mostly hardening the test suite of the various concurrent data structure libraries that conform the base of TFS. He even found a segfault in conc::hazard::Hazard
’s safe code. But to be honest, I don’t think I’m honouring all the work I saw while looking at the commit history. So, go ahead and check yourself ;)
Coreutils also progressed with the addition of a --reset
flag to shutdown
by @jackpot51. @goyox86 extracted the ArgParser
to it’s own library and migrated coreutils
and userutils
to it. @ids1024 added the uname
utility and shipped fixes for both rm
and which
.
@goyox86 tried to improve overall quality of userutils by reimplementing whoami
and id
from scratch using system calls (previous implementations relied on environment vars). He also added docs to all user utilities and applied most of the recent coreutils
code conventions there.
On the netstack @jackpot51 trimmed the network configuration while @ids1024 corrected fpath()
implementation on tcpd
and fixed a bug in tcpd
responsible of the breakage HTTPS in curl
.
The cookbook was not as active as in past weeks only with some fixes to the pastel
recipe and all the hard work from @ids1024 on the git
one.
Last but not least Orbital Redox’s composition and windowing manager received some attention from @jackpot51 resulting on the addition of left corner resizing and the starting of a new event based method.
Phew! That was a lot, thanks for staying tuned!
Kernel
- @jackpot51 Added reset code. Details here.
- @jackpot51 Reduced the scope of context blocks. Details here.
- @jackpot51 Implemented
iopl
. Details here. - @ids1024 Updated pipes to return
ESPIPE
when you try toseek
on them. Details here. - @ids1024 Implemented
sys:uname
. 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 Converted
children: Vec<Option<Child>>
toVec<u32>
on pipes. Details here. - @mmstick Resolved some
SIGPIPE
issues in job control. Details here. - @mmstick Made a fix on shell expansion: if it’s not a glob then the original word is kept. Details here.
- @mmstick Added support to remember last background job ID. Now when the fg and bg commands are executed without arguments, the last background job ID will be used as the argument. Details here.
- @chenl Fixed a typo in the README. Details here.
- @mmstick Made some work to only enable context with interactive sessions. This speeds up script executions. Details here.
- @mmstick Extracted binary logic from the shell module. Details here.
- @mmstick Migrated readln prompt Into binary logic. Details here.
- @drosseau Fixed a bug in which
echo
was treating anything preceded by-
as an option flag. Details here. - @drosseau Made an improvement and now jobs no longer use a separate list of builtins to determine the command type. Details here.
- @drosseau Made an fix for
||
and&&
which were not working as expected. Details here. - @drosseau Added the
not
builtin. Details here. - @drosseau Made a fix for
echo
. Details here. - @jackpot51 Fixed an issue with the
bytecount
crate when using Rust nightly. Details here. - @clippix Added support to only read init file when using interactive shell. Details here.
- @huntergoldstein Added support for inline expressions in methods. Details here.
- @huntergoldstein Did some misc improvements on the code of shell words expansion. Details here.
- @huntergoldstein Added a change for case statements which makes them implicitly ended now. Details here.
- @drosseau Made the builtins a little neater (Closures weren’t very friendly for debuggers/backtrace). Details here.
- @drosseau Added more consistency to builtins. Details here.
- @richiejp Improved error handling during process spawning. Details here.
- @drosseau Added the
matches
builtin and fixed a grammar issue. Details here. - @drosseau Fixed some range syntax bugs. Details here.
- @mmstick Started an mdbook based user manual for Ion! Details here.
Drivers
- @jackpot51 Added newlines to the config of the network drivers. Details here.
- @jackpot51 Divided
pcid
config intoinitfs
andfs
. Details here. - @jackpot51 Made a change to use dashes for mac addresses on the network drivers. Details here.
Redoxfs
- @ids1024 Added a change to prevent the failure due to file permissions on creation. Details here.
- @ids1024 Made a fix to require same
uid
as owner tounlink
, not write permission. 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 Changed the trap values of
conc::hazard::Hazard
, so it can safely store null and 0x1 pointers. Details here. - @ticki Added tests to
conc::hazard::Hazard
, revealing a segfault in safe code. Details here. - @ticki Fixed
conc::hazard::tests::hazard_set_get()
test, as suggested by Reddit user sebzim4500. Details here. - @ticki Removed a broken double-panicking test in
conc::hazard
. Details here. - @ticki Fixed
conc
tests failing because theRefCell
in the local state TLS variable is not mutually exclusive. Details here. - @ticki Added a change to not expect
T: ?Sized
forconc::Guard<T>
. Details here. - @ticki Added support for catching endless looping caused by
conc::Guard::try_new
(and friends) calling garbage collecting functions. Details here. - @ticki Added support for counting the number of read spins of
conc::hazard::Hazard
enabling the detection of infinite loops in debug mode. Details here. - @ticki Removed some hardcoded constants in
conc::hazard
. Details here. - @ticki Added a check against freeing blocked hazards through
local::free_hazard()
inconc
.Details here. - @ticki Added a test for debug assertions in
conc
. Details here. - @ticki Documented how
conc::Atomic
is represented. Details here. - @ticki Added
conc::sync::Treiber::top()
for getting the top item of the stack w/o popping. Details here. - @ticki After reverted
conc::sync::Treiber::top()
as it was unsound as it could cause double drop. Details here. - @ticki Set a spin limit for
conc::hazard::Hazard
up to avoid spurious panics in debug mode. Details here. - @ticki Added a test for panicking in destructor of
conc::sync::Treiber
. Details here. - @ticki Added a test to make sure that the destructor actually runs in
conc::local
. Details here. - @ticki Added a test to make sure that the destructor actually runs in
conc::global
. Details here. - @ticki Added support for handling unwinding destructors in
conc::Garbage
by crashing when they panic. Details here. - @ticki Allowed destructors in
conc
to unwind. Details here. - @ticki Added
conc
tests for sending hazards cross threads. Details here. - @ticki Switched to spin locks in
conc
due to an issue withparking_lot
. Details here.
Coreutils
- @jackpot51 Added a reset flag to
shutdown
. Details here. - @goyox86 Extracted the
ArgParser
to it’s own library and migratedcoreutils
to it. Details here. - @ids1024 Fixed directory support in
rm
. Details here. - @ids1024 Made
which
work with multiple directories inPATH
. Details here. - @ids1024 Added a
uname
utility. Details here.
Userutils
- @goyox86 Reimplemented
whoami
again on top of system calls (previously was based on env vars). Details here. - @goyox86 Reimplemented
id
again on top of system calls along with refactoring of the crate and added documentation to all utilities. Details here. - @goyox86 Made tweaks to
id
docs and copy-paste typos. Details here. - @goyox86 Made a revision of
getty
improving error-handling, migrated toArgParser
and improved docs. Details here.
Netstack
- @jackpot51 Trimmed the network configuration. Details here.
- @ids1024 Corrected
fpath()
fortcpd
. Details here. - @ids1024 Fixed a bug in
tcpd
s partial reads that was breaking https incurl
. Details here.
Netutils
- @jackpot51 Add newlines to network config. Details here.
- @jackpot51 Fixed trim usage in
dhcpd
. Details here.
Orbital
Orbital is the windowing system and compositor for Redox.
- @jackpot51 Made a fix to close display and socket before launching
orblogin
. Details here. - @jackpot51 Started the work on moving to an event based method. Details here.
- @jackpot51 Removed a lot of debugging. Details here.
- @jackpot51 Added support for left side and bottom left corner resizing. Details here.
- @jackpot51 Made a change to add
/ui/bin
toPATH
when launching the first orbital application.
Cookbook
The cookbook the collection of package recipes of Redox.
- @jackpot51 Made an update to the
drivers
recipe. Details here. - @jackpot51 Added file types to
pastel
. Details here. - @jackpot51 Added a manifest for Pastel, placing it in /ui/bin. Details here.
- @ids1024 Updated the
git
recipe to overridegit
s SHA1 implementation. 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.
- Chen Rotem Levy 🎂
- Cooper Paul EdenDay 🎂
- Danny 🎂
- Danny Rosseau 🎂
- Jean-Loup ‘clippix’ Bogalho 🎂
- m4b 🎂
- Richard Palethorpe 🎂
If I missed something, feel free to contact me (goyox86) or send a PR to Redox website.