This Week in Redox 30
By goyox86 on
This is the 30th 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
Hello there! And welcome to another edition of TWiR!
As usual, we have been busy making Redox better and we have a couple of exciting news to share. So, Let’s get started!
First of all, @andre pointed out that the Docker experience has been improved. Among others, consecutive builds are now way faster because cargo
downloads are cached with named volumes. Also, there’s documentation for running the container interactively now. Please check it out here!
We are super excited about the work done by @jackpot51 towards the installer support. For example, the bootloader now supports filesystem UUID detection and is able to send that information to the kernel at boot time. The kernel has notably gained the ability to receive environment variables at the main entry point (kmain
) this is needed to being able to receive that REDOXFS_UUID
environment with the filesystem UUID to be mounted. It’s also worth mentioning that @jackpot51 made some refactoring to the kernel arguments infrastructure.
The other very important change is related to schemes. Redox now supports hierarchical schemes enabling for example, more than one disk controller.
Other exciting news in the kernel is the work on capability based security. Basically, capability mode will make a process unable to open new file descriptors unless it has required access to it, improving security and allowing more reasoning about the system. The sys:iostat
scheme for example, should tell you what any process is allowed to do, once it is in capability mode. You can read more about capability based security here and also check out FreeBSD’s implementation of this model.
Along with this work is the support for disk hierarchies added to the AHCID driver and the support for capability mode added to all the drivers by using the 0
namespace (also known as null namespace). In addition to that, we have now a vmmouse
driver which should improve significantly the mouse support in QEMU
.
Redoxfs was cleaned to allow use of most functions when linking the library, including mounting and creating file systems. It was also extended to allow a bootloader to be written during redoxfs-mkfs
but, without doubt, the most notable feature is the addition of UUID
support, enabling file systems to be mounted by UUID
(used by the installer).
Moving up to the userland we have Ion which experienced a lot of changes and improvements notably: The initial work on library support, the support for custom prompts via the PROMPT
function, the implementation of $find()
and @split_at()
, support multi-line array assignments and lots of refactoring to the words
module all by @mmstick.
The cookbook got some new packages (a lot of the related to games and emulators ;)): notably 2048
, cleye
, rust64
and rs-nes
thanks to @jackpot51.
The coreutils yes
utility was improved by @youknowone to show invalid parameter error rather than silencing ‘y’.
On the GUI side of things Orbital was updated to use the null
namespace and @dummie999 was busy with Sodium adding line numbers, wrapping long lines, fixing a bug that could cause panic when deleting lines, fixing a bug when entering invalid commands in prompt and making buffers behave more consistent.
Bonus: There is a new release in the works. It should be out in the next few days, make sure you give it a spin!
Bootloader
Redox OS Bootloader
- @jackpot51 Made a change to prepare
bootloader
for use in installer. Details here. - @jackpot51 Printed UUID, cleaned up print functions, and reformated kernel arguments. Details here.
- @jackpot51 Added support to send REDOXFS_UUID to kernel. Details here.
- @jackpot51 Fixed an off-by-one error when copying env. Details here.
Kernel
The Redox microkernel
- @jackpot51 Updated README.md. Details here and here.
- @jackpot51 Created LICENSE. Details here.
- @jackpot51 Fixed the output of build script. Details here.
- @jackpot51 Updated dependencies. Details here.
- @jackpot51 Fixed more documentation. Details here.
- @jackpot51 Updated features for latest nightly. Details here.
- @jackpot51 Chnaged hybrid -> micro. Details here.
- @jackpot51 Updated README.md. Details here.
- @jackpot51 Downgraded
goblin
crate. Details here. - @jackpot51 Allowed the listing of
root
scheme. Details here. - @jackpot51 Reformated kernel arguments. Details here.
- @jackpot51 Passed
env
to the first function. Details here. - @jackpot51 Moved location of live disk. Details here.
- @jackpot51 Adedd
target-c-int-width
tox86_64
target. Details here. - @jaje Deduplicated
memcpy
,memmove
,memset
andmemcmp
functions. Details here. - @jackpot51 Added capability mode support using
null
namespace. Details here. - @GabrielMajeri Updated to
bitflags
version 1.0. Details here.
Drivers
Redox OS Drivers
- @jackpot51 Updated cargo.lock. Details here.
- @jackpot51 Made a change to use disk hierarchy. Details here.
- @jackpot51 Added
vmmouse
support. Details here. - @jackpot51 Updated Cargo.lock. Details here.
- @jackpot51 Added support to use capability mode (
null
namespace) for drivers. Details here. - @jackpot51 Update Cargo.lock. Details here.
Ion
The Ion Shell. Compatible with Redox and Linux.
- @mmstick Added initial library support. Details here.
- @mmstick Made variables struct cloneable. Details here.
- @mmstick disable
tcsetpgrp
when using Ion as a library. Details here. - @mmstick Implemented
PROMPT
function support, to use a function to generate a prompt, simply create a function whose name isPROMPT
. Details here. - @mmstick Re-ran
cargo fmt
. Details here. - @mmstick Made
export VAR
exports local variables. Details here. - @mmstick Added better error message for detected invalid implicit
cd
commands. Details here. - @mmstick Made a change so commands can be expanded now. Details here.
- @jackpot51 Updated Cargo.lock. Details here.
- @mmstick Applied fixed for #543, closes #543. Details here.
- @mmstick Applied fixes for #544, closes #544. Details here.
- @mmstick Fixed the integration tests. Details here.
- @mmstick Implemented the
-n
flag, closes #529. Details here. - @mmstick Switched to
d128
fork ofcalculate
, this addresses precision issues with floating point math by converting. Details here. - @mmstick Reverted to
master
branch ofcalculate
crate. Details here. - @mmstick Improved methods documentation. Details here.
- @mmstick Fixed #549, closed #549. Details here.
- @Kvikal Changed
is_array
to properly returnfalse
when multiple arrays are present. Details here. - @Kvikal Fixed a
TODO
inis_array
function: [1 2 3][0] is now treated as a string. Details here. - @mmstick Refactored the
words
module. Details here. - @mmstick String method args unescape
\n
and\t
sequences. Details here. - @mmstick Implemented
$find()
&@split_at()
. Details here. - @mmstick Improved method argument parsing. Details here.
- @jackpot51 Updated Cargo.lock. Details here.
- @mmstick Improved string methods. A bit of refactoring to make handling method arguments simpler. Details here.
- @mmstick Applied a fix for #551. Updated variables for commands that start with
~
too. Closes #551. Details here. - @mmstick Applied a fix for #532. Liner seems to be doing some very limited form of multi-line comment, support, itself. This change strips out the excess characters, that are returned by liner. Details here.
- @mmstick Made a change to let builtin prints variables. After the refactoring of how
let
and other builtins were parsed we lost the ability to get a list of local variables just by supplying thelet
command without any arguments. This fix re-implements that. Details here. - @mmstick Made some work so
get_vars()
now returns an iterator. Details here. - @mmstick Made some refactoring to string method. Details here.
- @mmstick Implemented multi-line array assignments. Details here.
- @mmstick Made more refactoring on the
words
module. Details here.
Cookbook
A collection of package recipes for Redox.
- @jackpot51 Added recipes for
2048
,cleye
, andrust64
. Details here. - @jackpot51 Added upstream URLs. Details here.
- @jackpot51 Updated the
rustual-boy
fork. Details here. - @jackpot51 Added
rs-nes
. Details here. - @jackpot51 Added upstream link if necessary. Details here.
- @jackpot51 Update the
status
script. Details here. - @jackpot51 Added upstream status script. Details here.
- @jackpot51 Added
diff
sub commands. Details here. - @jackpot51 Used color and –stat for
status
command. Details here. - @jackpot51 Added
difftool
sub commands. Details here.
Orbital
Redox Windowing and Compositing System
- @jackpot51 Made a change to utilize the
null
namespace. Details here. - @pharaone Updated README.md. Details here.
Redoxfs
The Redox Filesystem
- @jackpot51 Made a cleanup to allow use of most functions when linking the library, including mounting and creating filesystems. Details here.
- @jackpot51 Updated FUSE. Details here.
- @jackpot51 Fixed
cargo doc
. Details here. - @jackpot51 Cleaned up FUSE backend, also, made a fix to send signal at correct time. Details here.
- @jackpot51 Fixed compilation on Redox. Details here.
- @jackpot51 Update
spin
crate. Details here. - @jackpot51 Added
docs.rs
badge. Details here. - @jackpot51 Allowed a bootloader to be written during redoxfs-mkfs. Details here.
- @jackpot51 Fixed offset calculations. Details here.
- @jackpot51 Implemented
UUID
. Details here. - @jackpot51 Added
UUID
matching. Details here. - @jackpot51 Fixed the
disk
scheme path. Details here.
Sodium
Sodium: The Text Editor
- @dummie999 Added line numbers and wrapped lines that are too long. Details here.
- @dummie999 Fixed a bug that could cause panic when deleting lines. Details here.
- @dummie999 Fixed a bug when entering invalid command in prompt. Details here.
- @dummie999 Made buffers behave more consistent. Details here.
Coreutils
The Redox coreutils.
- @youknowone Improved ‘yes’ to show an invalid parameter error rather than silencing ‘y’. 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.
- @tjrana 🎂
- @GabrielMajeri 🎂
- @Kvikal 🎂
If I missed something, feel free to contact me @goyox86 or send a PR to Redox website.