This Week in Redox 20
By goyox86 on
This is the 20th 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.
With this post we restart the tradition of the weekly report and this one in particular is a catchup and it’s a big one! So bear with us please! ;)
(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?
Kernel
-
@jackpot51 implemented timeouts.
-
@jackpot51 implemented an memory allocator that recycles frames when possible using an inner bump allocator if it cannot recycle. This new recycling allocator also allows the allocation of larger frames.
-
@jackpot51 added the
sys:iostat
scheme. -
@jackpot51 implemented Implement CLOEXEC for root scheme and initfs.
-
@jackpot51 Other things include increasing the kernel heap size, fixed some bugs in the interrupts mechanism on serial devices, fixed
memmove()
, fixed some deallocation issues, cleaned the debug scheme and added xargo support. -
@jackpot51 added support to pass a live filesystem in the
FILESYSTEM
environment var to the live scheme. -
@pi-pi3 has improved the performance of
memcpy()
family of functions. -
@CWood1 has been working on adding AML support for the ACPI subsystem.
-
@InsidiousMind did some work on the PIT (Programmable interval timer). Now the PIT interrupt properly context switches fixing crashes in the kernel.
-
@bjorn3 added support for listing all schemes using the
:
scheme.
Ion
There has been so much work ion shell that we have it’s own section for this issue. 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.
-
@ids1024 has been working on Redox’s Newlib’s fork. Adding support for getuid(), getgid(), getcwd(), fixed execve() and many others.
-
@jFransham landed a patch enabling LTO which yields a ~15% speedup. Details here.
-
@jFransham reduced the number of allocations. Details here.
-
@Maaarcocr added descriptions to functions. Details here.
-
@amw-zero added s small change so whenever you type
fn
it will give you the set of currently defined functions. Details here. -
@mmstick added support for user’s home directories in non-redox systems. Details here.
-
@mmstick implemented basic arithmetic for let/export in. Details here.
-
@mmstick reworked the while loops and they now work as they do in other shells . Details here.
-
@mmstick added the ability to pass variables into subshells by expanding inner variables before performing process expansion. Details here.
-
@mmstick refactored the parser and also added process recursion. Details here.
-
@mmstick added the ability to split statements in a single line). Details here.
-
… and many small things!
Drivers
- @jackpot51 added support for the VirtualBox guest driver and implemented resizing on it.
- @jackpot51 added initial support for the Atheros ALX ethernet driver.
- @jackpot51 added initial support for the BGA mode setting.
- @jackpot51 added scroll events to orbclient.
- @jackpot51 added support for absolute mouse events in the VESA driver.
- @jackpot51 done some fixes to the PS/2 driver related to interrupts.
- @jackpot51 added support for retrying commands to ps2d.
- @jackpot51 implemented
path
for the e1000d and ahcid drivers. - @kaedroho migrated pcid from rustc-serialize to serde. He also added a few new keymaps to ps2d.
Coreutils
- @Mojo4242 added support for stdin and stdout to
dd
. Details here - @DaanHoogland added recursion support to
mv
. Details here - @n0npax added basic support for symbolic links to
ls
. Details here - @n0npax extended
ls
with new options for showing dates. Details here - @n0npax added the
ln
utility. Details here. - @n0npax refactored the
format_date
function. Details here - @bertinatto added the
--unique
option tosort
. Details here - @bertinatto added the
unique
command. Details here - @simondesloges added the
-f
and-F
options totail
. Details here - @simondesloges changed
ls
to useBufWriter
. Details here - @vladimiroff made
wc
consider Unicode spaces when counting words. Details here - @jackpot51 reimplemented
shutdown
on top of thekill
system call.
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.
There has been enough work done in TFS that we added this section in this edition so you can have an idea about how the progress is going there.
First of all: Great news! @ticki has been working on many aspects of TFS and he considers that it is pretty near to functional. One of the great things is that as a product of this work several crates with interesting data structures and algorithms were created:
- chashmap - Concurrent hashmaps.
- cbloom - Concurrent bloom filters.
- lz4 - An implementation of lz4.
- speck - An implementation of SPECK cipher.
- tm - transactional memory.
- atomic-hashmap - Atomic hashmaps (you can read the blog post).
- mlcr - A machine-learning based cache replacement strategy.
- seahash - A hash function.
- concurrent - Hazard pointers implementation.
- TFS has a logo.
- There is a specification document.
- A bunch of blog posts on design: https://github.com/redox-os/tfs#resources-on-design.
And according @ticki there’s a ton of interesting things to write about, and eventually he will be doing an in-depth blog post about them.
Package Management
There has been a ton of work on this topic specially on the pkgutils. Redox OS packaging utilities and in the cookbook the collection of package recipes.
- @ids1024 migrated
pkg
to Hyper. Details here. - @ids1024 made
pkg
able to install packages from a given path. Details here. - @ids1024 made possible to use the pkgutils library on Linux and install to custom destination. Details here.
- @ids1024 pkgutils now use the tar-rs library instead of the
tar
binary. Details here. - @ids1024 added support for package metadata. Details here.
- @ids1024 added a
Package
struct. Details here. - @jackpot51 added a method for configuring repos to
pkg
. - @jackpot51 started the work on upgrading logic in
pkg
. - @jackpot51 worked on package signature verification so we determine the need for re-downloading packages.
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.
- Abdel-Rahman 🎂
- Adrian Neumann 🎂
- Aurélien DESBRIÈRES 🎂
- Clint Byrum 🎂
- Ian Douglas Scott 🎂
- Konrad Lipner 🎂
- Michael Köppl 🎂
- Niklas Claesson 🎂
- Petr 🎂
- Richard Dodd 🎂
- bjorn3 🎂
- equal-l2 🎂
- n0npax 🎂
If I missed something, feel free to contact me (Ticki) or send a PR to Redox website.