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.

. 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.

. 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 with File for RefinedJob . Details here.

with for . Details here. @bb010g Switched from HISTORY_FILE to HISTFILE . Details here.

to . Details here. @huntergoldstein Made the read builtin detect if stdin is a TTY. Details here.

builtin detect if is a TTY. Details here. @mmstick Fixed implicit cd support. Details here.

support. Details here. @mmstick Removed @len() & migrated logic into $len() . Details here.

& migrated logic into . Details here. @mmstick Implemented $contains , $starts_with , and $ends_with . Details here.

, , and . Details here. @mmstick Made a change to use macros to simplify string method handling. Details here.

@mmstick Implemented $replace() and $replacen() . Details here.

and . Details here. @mmstick Updated $replace() and $replacen() tests. Details here.

and tests. Details here. @mmstick Implemented $repeat() . Details here.

. Details here. @mmstick Improved whitespace splitting. Details here.

@mmstick Fixed typo in Redox submodule which fixed istty check. Details here.

check. Details here. @huntergoldstein Implemented command line options to pushd and dirs . Details here.

and . 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 , and ends_with builtins. Details here.

, , and builtins. Details here. @mmstick Fixed stable builds. Details here.

@mmstick Refactored & commented shell::pipe_exec . Details here.

. Details here. @mmstick Made some fixes to ends-with and also some refactoring. Details here.

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.

. Details here. @mmstick Enabled function pipelining. Details here and here.

@huntergoldstein Replaced ExpanderFunctions with the Expander trait. Details here.

with the 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.

variable namespace. Details here. @mmstick Implemented string namespace plugins support. Details here.

@mmstick Ran rustfmt across the entire project. Details here and here.

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.

structure in the XHCI driver. Details here. @jackpot51 Simplyfied vesad using ptyd for control logic. Details here.

using 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 and rtl8168d . Details here.

and . 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.

. Details here. @ticki Fix documentation for wrong use of Guard::new . Details here.

. Details here. @ticki Improved documentation of atomic-hashmap . Details here.

. Details here. @cedenday Fixed a typo in conc::atomic . Details here.

. Details here. @ticki Updated conc documentation to include pros/cons against crossbeam . Details here.

documentation to include pros/cons against . Details here. @ticki Fixed unsoundness in conc relating to use of Sync and Send . Details here.

relating to use of and . Details here. @ticki Fixed a rare (happens around one time in every 2^64 or 2^32 calls) bug in conc . Details here.

. Details here. @ticki Add a dynamic settings system to conc for setting parameters. Details here.

for setting parameters. Details here. @ticki Reorganized the ABA loops in atomic-hashmap . Details here.

. Details here. @ticki Fixed the orderings of conc::sync::Stm<T> . Details here.

. Details here. @ticki Updated confusing sections in conc ’s docs after Reddit feedback. Details here.

’s docs after Reddit feedback. Details here. @ticki Updated docs of conc with overview of the API. Details here.

with overview of the API. Details here. @ticki Bumped conc to 0.2.0. Details here.

to 0.2.0. Details here. @ticki Fixed a final test in conc . Details here.

. Details here. @ticki Enabled optional stacktraces for conc debug mode. Details here.

debug mode. Details here. @ticki Added runtime debug tools to conc . Details here.

. Details here. @ticki Fixed issues where successful CAS in conc::sync::treiber is regarded as final. Details here.

is regarded as final. Details here. @cedenday Added basic benchmarking to speck . Details here.

. Details here. @cedenday Added trait derivations to speck ’s Key . Details here.

’s . Details here. @ticki Updated the library-wide docs of conc with usage information. Details here.

with usage information. Details here. @ticki Rewrote conc::sync::treiber to consider #57. Details here.

to consider #57. Details here. @ticki Updated the library-wide docs of conc with usage information. Details here.

with usage information. Details here. @ticki Rename conc::Guard::as_raw() to as_ptr() and implement PartialEq for Guard . Details here.

to and implement for . Details here. @ticki Added conc::Guard::{try,maybe}_map . Details here.

Coreutils

@jackpot51 Replaced termion . Details here

Userutils

@jackpot51 Replaced termion . Details here.

. Details here. @jackpot51 Updated password read to new method in passwd and su . Details here.

Netutils

@jackpot51 Replaced termion . Details here

. Details here @Abogical Added the whois utility. Details here, here and here.

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.

. Details here and here respectively. @ids1024 Added gzip and xz extraction support, along with verbose support to tar . Details here.

. Details here. @ids1024 Implemented --directory and --strip-components for tar . 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 and uutils . Details here.

and . Details here. @ids1024 Enabled C++ support in the gcc recipe. Details here.

recipe. Details here. @ids1024 Switch the target triple from "x86_64-elf-redox-* to x86_64-unknown-redox-* . Details here.

to . Details here. @ids1024 Added a recipe for bash . Details here.

. Details here. @ids1024 Added a recipe for xz . Details here.

. Details here. @ids1024 Made xz a build dependency of extrautils . Details here.

a build dependency of . Details here. @ids1024 Added a recipe for patch . Details here.

. Details here. @ids1024 Made a change to user system pkg when cookbook is running on Redox. Details here.

when cookbook is running on Redox. Details here. @ids1024 Patched patch to prevent it from calling chown . Details here.

to prevent it from calling . Details here. @ids1024 Passed -p to cp in order to make running autotools unnecessary. Details here.

to in order to make running autotools unnecessary. Details here. @ids1024 Opened a PR for making rustc backtraces work on Redox. Details here.

backtraces work on Redox. Details here. @goyox86 Added some permission and misc (mostly mode_t related) constants to Redox on the libc crate (this is part of the ongoing exa port). Details here.

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.