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

@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 the let command without any arguments. This fix re-implements that. Details here.

@mmstick Made some work so get_vars() now returns an iterator. Details here.