This Week in Redox 28
By goyox86 on
This is the 28th 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
, our Discourse forum or you can get an invite to our chat by sending an email request to info@redox-os.org
.
What’s new in Redox?
TL;DR
Welcome to the 28th edition of “This Week in Redox”!
The team has been very busy working on cool stuff this last weeks!
Starting with the kernel, @cookie545445 improved the portability of the kernel codebase by isolating X86_64
dependent code into subfolders and @ids1024 added support for file descriptions, updated pipe
to use FIFO
flag, reverted a freeze caused by a double locking finishig with the implementation of F_DUPFD
.
Ion flow continues fast and steady! Some cool features were added by @mmstick: $contains
, $starts_with
, $ends_with()
, $replace()
, $replacen()
and $repeat()
. He also removed the dependency on the peg
crate, enabled function pipelining/redirecting, rustfmt
ed the whole codebase and implemented contains
, starts_with
, and ends_with
builtins. Also in Ion, @huntergoldstein implemented command line options for pushd
and dirs
. Meanwhile, @bb010g switched Ion from HISTORY_FILE
to HISTFILE
for history tracking.
On drivers land, the star of this week is the work being done by @jackpot51 in the XCHI
controller driver (which means that USB support is around the corner!). He also simplified vesad
control logic.
Next stop is Redoxfs, where @jackpot51 and @ids1024 enabled deallocating on resizing and fixed a freeze caused by a double lock respectively.
TFS folks where also very busy these last weeks! Notably @ticki who published a blog post about the new shiny conc crate which uses hazard pointers instead of epochs for doing concurrent memory reclamation. @ticki was also busy improving the documentation of the conc
crate, rewriting conc::sync::treiber
and adding conc::Guard::{try,maybe}_map
while @cedenday added a few trait derivations to speck
’s Key
.
@Abogical added the whois
utility to Netutils and @ids1024 added gzip
and xz
extraction support to extrautils’s tar
.
And! Last but not least in the cookbook: @jackpot51 switched to a Redox patched version of findutils
and uutils
, while @ids1024 enabled C++ support in the gcc
recipe, replaced the target triple from "x86_64-elf-redox-*
to x86_64-unknown-redox-*
. Ultimately, new recipes for bash
, xz
and patch
were also added this week.
On a side note, I’m gonna be on holidays until September 7th and in consequence there will be radio silence during that period. But don’t panic! we will be back sooner than you think!
Enjoy the rest of this weeks issue!
Kernel
- @ids1024 Added file descriptions to be shared between file descriptors. Details here.
- @cookie545445 Move x86_64-specific code to
arch/x86_64
. Details here. - @ids1024 Made an update to use FIFO flag for pipe. Details here.
- @ids1024 Prevented a freeze due to double locking. Details here.
- @ids1024 Implemented
F_DUPFD
. Details here. - @jackpot51 Updated the
syscall
crate. 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 Replaced the use of
RawFd
withFile
forRefinedJob
. Details here. - @bb010g Switched from
HISTORY_FILE
toHISTFILE
. Details here. - @huntergoldstein Made the
read
builtin detect ifstdin
is a TTY. Details here. - @mmstick Fixed implicit
cd
support. Details here. - @mmstick Removed
@len()
& migrated logic into$len()
. Details here. - @mmstick Implemented
$contains
,$starts_with
, and$ends_with
. Details here. - @mmstick Made a change to use macros to simplify string method handling. Details here.
- @mmstick Implemented
$replace()
and$replacen()
. Details here. - @mmstick Updated
$replace()
and$replacen()
tests. Details here. - @mmstick Implemented
$repeat()
. Details here. - @mmstick Improved whitespace splitting. Details here.
- @mmstick Fixed typo in Redox submodule which fixed
istty
check. Details here. - @huntergoldstein Implemented command line options to
pushd
anddirs
. Details here. - @mmstick Fixed an issue with ranges. Details here.
- @mmstick Made some fixes to background job execution. Details here.
- @mmstick Refactored pipeline execution mode. Details here.
- @mmstick Made some background and foreground fixes. Details here.
- @mmstick Improved error status. Details here.
- @mmstick Implemented
contains
,starts_with
, andends_with
builtins. Details here. - @mmstick Fixed stable builds. Details here.
- @mmstick Refactored & commented
shell::pipe_exec
. Details here. - @mmstick Made some fixes to
ends-with
and also some refactoring. Details here. - @mmstick Did a lot of work on removing the dependency on PEG. Details here, here, here and here.
- @mmstick Refactored the parser module. Details here.
- @mmstick Fixed some parser and pipelines tests. Details here.
- @mmstick Switched to a patched version of
termion
. Details here. - @mmstick Enabled function pipelining. Details here and here.
- @huntergoldstein Replaced
ExpanderFunctions
with theExpander
trait. Details here. - @mmstick Enabled redirecting functions. Details here.
- @mmstick Updated function piping output. Details here.
- @mmstick Enabled creating background jobs from functions. Details here.
- @mmstick Implemented an
env
variable namespace. Details here. - @mmstick Implemented string namespace plugins support. Details here.
- @mmstick Ran
rustfmt
across the entire project. Details here and here. - @mmstick Documented plugin support and Vim highlighting. Details here.
- @jackpot51 Fixed Redox the namespaces plugin. Details here.
Drivers
- @jackpot51 Refactored the XHCI driver. Details here.
- @jackpot51 Added missing imports in the XHCI driver. Details here.
- @jackpot51 Added more debugging to the XHCI driver. Details here.
- @jackpot51 Updated the
EventSte
structure in the XHCI driver. Details here. - @jackpot51 Simplyfied
vesad
usingptyd
for control logic. Details here. - @jackpot51 Started work on grabbing device information on the XHCI driver. Details here.
- @jackpot51 Added support for reading device, config, interface, and endpoint descriptions in the XHCI driver. Details here.
- @jackpot51 Improved the format of debugging data in XHCI. Details here and here.
- @jackpot51 Cleaned up the XHCI driver, added basic IRQ event functions and cleaned up
e100d
andrtl8168d
. Details here. - @jackpot51 Improved the ring state machine in XHCI driver. Details here.
Redoxfs
- @jackpot51 Added a change to deallocate when node size changes. Details here.
- @jackpot51 Fixed a typo. Details here.
- @ids1024 Made a fix to avoid corrupting free nodes. Details here.
- @ids1024 Removed unneeded uses of
mut
. 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 Published a new blog “Fearless concurrency with hazard pointers” about the new shiny conc crate. Details here.
- @ticki Fixed some compile errors in
atomic-hashmap
. Details here. - @ticki Fix documentation for wrong use of
Guard::new
. Details here. - @ticki Improved documentation of
atomic-hashmap
. Details here. - @cedenday Fixed a typo in
conc::atomic
. Details here. - @ticki Updated
conc
documentation to include pros/cons againstcrossbeam
. Details here. - @ticki Fixed unsoundness in
conc
relating to use ofSync
andSend
. Details here. - @ticki Fixed a rare (happens around one time in every 2^64 or 2^32 calls) bug in
conc
. Details here. - @ticki Add a dynamic settings system to
conc
for setting parameters. Details here. - @ticki Reorganized the ABA loops in
atomic-hashmap
. Details here. - @ticki Fixed the orderings of
conc::sync::Stm<T>
. Details here. - @ticki Updated confusing sections in
conc
’s docs after Reddit feedback. Details here. - @ticki Updated docs of
conc
with overview of the API. Details here. - @ticki Bumped
conc
to 0.2.0. Details here. - @ticki Fixed a final test in
conc
. Details here. - @ticki Enabled optional stacktraces for
conc
debug mode. Details here. - @ticki Added runtime debug tools to
conc
. Details here. - @ticki Fixed issues where successful CAS in
conc::sync::treiber
is regarded as final. Details here. - @cedenday Added basic benchmarking to
speck
. Details here. - @cedenday Added trait derivations to
speck
’sKey
. Details here. - @ticki Updated the library-wide docs of
conc
with usage information. Details here. - @ticki Rewrote
conc::sync::treiber
to consider #57. Details here. - @ticki Updated the library-wide docs of
conc
with usage information. Details here. - @ticki Rename
conc::Guard::as_raw()
toas_ptr()
and implementPartialEq
forGuard
. Details here. - @ticki Added
conc::Guard::{try,maybe}_map
. Details here.
Coreutils
- @jackpot51 Replaced
termion
. Details here
Userutils
- @jackpot51 Replaced
termion
. Details here. - @jackpot51 Updated password read to new method in
passwd
andsu
. Details here.
Netutils
- @jackpot51 Replaced
termion
. Details here - @Abogical Added the
whois
utility. Details here, here and here. - @ids1024 Made
wget
use the-O
argument, matching standard behavior. Details here.
Extrautils
- @jackpot51 Replaced and updated
termion
. Details here and here respectively. - @ids1024 Added gzip and xz extraction support, along with verbose support to
tar
. Details here. - @ids1024 Implemented
--directory
and--strip-components
fortar
. Details here.
Orbital
- @jackpot51 Removed a bunch of unnecessary muts. Details here and here.
Cookbook
The cookbook the collection of package recipes of Redox.
- @jackpot51 Switched to a Redox patched version of
findutils
anduutils
. Details here. - @ids1024 Enabled C++ support in the
gcc
recipe. Details here. - @ids1024 Switch the target triple from
"x86_64-elf-redox-*
tox86_64-unknown-redox-*
. Details here. - @ids1024 Added a recipe for
bash
. Details here. - @ids1024 Added a recipe for
xz
. Details here. - @ids1024 Made
xz
a build dependency ofextrautils
. Details here. - @ids1024 Added a recipe for
patch
. Details here. - @ids1024 Made a change to user system
pkg
when cookbook is running on Redox. Details here. - @ids1024 Patched
patch
to prevent it from callingchown
. Details here. - @ids1024 Passed
-p
tocp
in order to make running autotools unnecessary. Details here. - @ids1024 Opened a PR for making
rustc
backtraces work on Redox. Details here. - @goyox86 Added some permission and misc (mostly
mode_t
related) constants to Redox on thelibc
crate (this is part of the ongoingexa
port). 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.
- cookie545445 🎂
- garasubo 🎂
If I missed something, feel free to contact me (goyox86) or send a PR to Redox website.