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, rustfmted 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
syscallcrate. 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
RawFdwithFileforRefinedJob. Details here. - @bb010g Switched from
HISTORY_FILEtoHISTFILE. Details here. - @huntergoldstein Made the
readbuiltin detect ifstdinis a TTY. Details here. - @mmstick Fixed implicit
cdsupport. 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
isttycheck. Details here. - @huntergoldstein Implemented command line options to
pushdanddirs. 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_withbuiltins. Details here. - @mmstick Fixed stable builds. Details here.
- @mmstick Refactored & commented
shell::pipe_exec. Details here. - @mmstick Made some fixes to
ends-withand 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
ExpanderFunctionswith theExpandertrait. 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
envvariable namespace. Details here. - @mmstick Implemented string namespace plugins support. Details here.
- @mmstick Ran
rustfmtacross 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
EventStestructure in the XHCI driver. Details here. - @jackpot51 Simplyfied
vesadusingptydfor 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
e100dandrtl8168d. 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
concdocumentation to include pros/cons againstcrossbeam. Details here. - @ticki Fixed unsoundness in
concrelating to use ofSyncandSend. 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
concfor 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
concwith overview of the API. Details here. - @ticki Bumped
concto 0.2.0. Details here. - @ticki Fixed a final test in
conc. Details here. - @ticki Enabled optional stacktraces for
concdebug mode. Details here. - @ticki Added runtime debug tools to
conc. Details here. - @ticki Fixed issues where successful CAS in
conc::sync::treiberis 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
concwith usage information. Details here. - @ticki Rewrote
conc::sync::treiberto consider #57. Details here. - @ticki Updated the library-wide docs of
concwith usage information. Details here. - @ticki Rename
conc::Guard::as_raw()toas_ptr()and implementPartialEqforGuard. 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
passwdandsu. Details here.
Netutils
- @jackpot51 Replaced
termion. Details here - @Abogical Added the
whoisutility. Details here, here and here. - @ids1024 Made
wgetuse the-Oargument, 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
--directoryand--strip-componentsfortar. 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
findutilsanduutils. Details here. - @ids1024 Enabled C++ support in the
gccrecipe. 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
xza build dependency ofextrautils. Details here. - @ids1024 Added a recipe for
patch. Details here. - @ids1024 Made a change to user system
pkgwhen cookbook is running on Redox. Details here. - @ids1024 Patched
patchto prevent it from callingchown. Details here. - @ids1024 Passed
-ptocpin order to make running autotools unnecessary. Details here. - @ids1024 Opened a PR for making
rustcbacktraces work on Redox. Details here. - @goyox86 Added some permission and misc (mostly
mode_trelated) constants to Redox on thelibccrate (this is part of the ongoingexaport). 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.