This Week in Redox 34
By goyox86 on
This is the 34th 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 last TWiRx of the year!
2017 has been fantastic! The project has been more active and vibrant than ever. The team worked super hard and shipped a ton of interesting stuff! I am preparing a summary of the most interesting things that happened in 2017 and I will be publishing it in a few days. So stay tuned!
Without further ado, here is what happened this last few weeks:
Big news! We were surprised this week by @jackpot51 and his news about the plans to create a foundation to support and foster Redox OS and it’s ecosystem. This is really good news! More on it on the upcoming issues.
In the main top-level repo (redox) netdb
(which contains the default /etc/hosts
and friends) is now included in the filesystem by default. Also, @jD91mZM2 fixed the rust toolchain to nightly-2017-12-21
as the ring
does not work with the latest nightly
.
In the kernel there was a super cool page table optimization made by @weclaw1, basically now we use bits 51-61
in the first entries of each page table as a counter for used entries. After this change, checking if page table is empty is a O(1)
operation instead of O(n)
, where n
is the number of entries, Neato!
The null
and zero
daemons which implement the null:
and zero:
schemes respectively where moved to userspace by @Arcterus, along with a shinny new frename
implementation.
As you might suspect, the syscall crate the new, shinny frename
call, <3.
Redoxfs got renaming support with the implementation of frename
.
Ion, The Redox (and Linux) shell, saw a lot of activity, notably the addition of the exec
builtin by @dlrobertson, the addition of a title bar setting and the ability to produce any character using hex code by @jackpot51. @nihathrael was busy adding the @lines()
and @reverse()
methods while @mmstick made a change to use a static map for simple color lookups, removed Shell::update_variables
, added UID
and EUID
, added support for enabling forks to ignore streams, fixed EAGAIN
error on forks and started to work on library/binary separation.
The cookbook saw the birth of a newlib
test suite, packages for the recently moved to userspace nulld
and zerod
daemons, some improvements to the bash
along a fixed the raw-bin
(which was broken because of the recent changes to redox_users
’s API).
On the GUI side of things, Orbtk the widget toolkit saw a change by @FloVanGH who used include_bytes!
to load icons on ComboBoxes.
Also UI related, Orbterm, the terminal emulator, received an Ion related fix which unsets the COLUMNS
and LINES
variables while @jD91mZM2 landed the initial configuration support.
libextra got a new unwrap_or_exit
helper meant to simplify a lot of repetitive code in the *utils
(and CLI apps) packages.
Finally, in the land of the utils (coreutils and userutils), there were only two minor changes related to using unwrap_or_exit
and the new APIs exposed by redox_users
.
Thanks to all the people who supported the project this year, from the contributors to the patreons, and all the people that spread the word, and the Rust community for creating such an amazing tool, enabling us our ultimate objective: to create a modern, lightweight fast and above all, a safer operating system.
See you next year!
Redox
Redox: Main repository.
- @jackpot51 Added
netdb
. Details here. - @jackpot51 Updated
cookbook
. Details here. - @jackpot51 Updated the
kernel
. Details here. - @Arcterus Moved
null:
andzero:
schemes to user space. Details here. - @NilSet Made a temporal change to use
bash
as shell until #1124 is fixed. Details here. - @jackpot51 Updated the
cookbook
and thekernel
. Details here. - @jD91mZM2 Created
rust-toolchain
. Details here. - @NilSet Installed realpath for cookbook CI. Details here.
- @jackpot51 Updated cookbook. Details here.
- @jackpot51 Updated
rust
to the same commit asrust-toolchain
. Details here. - @jackpot51 Updated
rust
andkernel
. Details here. - @jackpot51 Updated
cookbook
. Details here. - @jackpot51 Updated
kernel
. Details here. - @jackpot51 Reverted “Use bash as shell until #1124 is fixed”. Details here.
- @ids1024 Made a change in order to not mentioning
rustup override set
in the README. Details here.
Kernel
The Redox microkernel
- @weclaw1 Made a page table optimization. Details here.
- @Arcterus Moved
null
andzero
from kernel space to user space. Details here. - @NilSet Made a change to check if current namespace exists. Details here.
- @jackpot51 Added
clippy
lints, as well as made some improvements based onclippy
suggestions. Details here. - @jackpot51 Added
frename
. Details here. - @jackpot51 Used TLS alignment to fix https://github.com/redox-os/redox/issues/1124 (was causing Ion to pagefault). Details here.
Ion
The Ion Shell. Compatible with Redox and Linux.
- @dlrobertson Added the
exec
builtin. Details here. - @AgustinCB Replaced
writeln!(stderr, ...)
by calls toeprintln!
. Details here. - @mmstick Don’t expand prompt function outputs. Fixing #641. Details here.
- @dlrobertson Fixed errors with
sys::execve
on linux. Details here. - @jackpot51 Added title bar setting, also added the ability to produce any character using hex code. Details here.
- @mmstick Made a change to use static maps for simple color lookups. Details here.
- @Sag0Sag0 Added manpage for Ion. Details here.
- @nihathrael Added
@lines()
method (#441). Details here. - @nihathrael Reformated the code. Details here.
- @mmstick Removed
Shell::update_variables
. Details here. - @nihathrael Add
@reverse()
method (#441). Details here. - @mmstick Added
UID
andEUID
string variables. Details here. - @dlrobertson Fixed type casts in
sys::redox
. Details here. - @dlrobertson Updated test builtin option parsing. Details here.
- @mmstick Update version & dependencies. Details here.
- @nihathrael Made tests variable naming consistent. Use @ for arrays. Details here.
- @gnieto Fixed issues with escaping on double quote context. Details here.
- @covercash2 Made a fix for issue #585. Details here.
- @mmstick Forks may now ignore streams. Details here.
- @mmstick Fixed
EAGAIN
fork errors. Thewaitpid()
function is required to reap child processes. The forking code was not using it, it would eventually cause EAGAIN errors, to occur. With this change, this will no longer be the case. Closes #589. Details here. - @mmstick Initial library/binary separation. Details here.
- @mmstick Fixed some Redox errors. Details here.
- @mmstick Fixed the Redox build. Details here.
- @jackpot51 Fixed the Redox build. Details here.
- @mmstick Overhauled the foreground job control. Details here.
Cookbook
A collection of package recipes for Redox.
- @jackpot51 Added
newlibtest
repo. Details here. - @jackpot51 Fixed build of
newlibtest
. Details here. - @Arcterus Added recipes for
nulld
andzerod
. Details here. - @NilSet Tried to fix the CI. Details here.
- @jackpot51 Allowed missing
llvm-source
inrust
recipe. Details here. - @jackpot51 Made the
bash
patch smaller. Details here. - @raw-bin Fixed a breakage due to missing
set{uid,gid)
definitions. Details here.
libextra
Extra stuff, we use in the Redox project.
Orbtk
The Orbital Widget Toolkit. Compatible with Redox and SDL2.
Orbterm
Orbital Terminal, compatible with Redox and Linux.
- @jackpot51 Made a change to unset
COLUMNS
andLINES
to fix issues when running Ion. Details here. - @jD91mZM2 Initial config support. Details here.
redoxfs
The Redox Filesystem
- @jackpot51 Added a stub for
frename
. Details here. - @jackpot51 Implemented
frename
fixing #37 and fix #11 by checking names. Details here.
syscall
Redox Rust Syscall Library
- @jackpot51 Added
frename
. Details here.
userutils
User and group management utilities
coreutils
The Redox coreutils.
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.
- @Arcterus 🎂
- @weclaw1 🎂
- @nihathrael 🎂
- @gnieto 🎂
If I missed something, feel free to contact me @goyox86 or send a PR to Redox website.