This Week in Redox 29
By goyox86 on
This is the 29th 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 again! Did you missed us?
We hope you did!
Anyways, I have good news for you: it was only me! Because the rest of the team was super busy making Redox even awesomer ;)
There is a lot of stuff packed on this one. So… Buckle up!
First things first: During my absence there were 3 new releases 0.3.1, 0.3.2 and 0.3.3 focused on better POSIX compatibility, improved ACPI support and lower memory usage respectively (Along many other things I’m gonna cover next).
We also have a new login window and a file dialog thanks to @jackpot51.
Other important news is that we are now maintaining the RustType crate, which can be found here, under the redox-os Github organization.
Let’s start the more detailed view with the kernel where we have the huge ACPI revamp done by @CWood1 which implements (among other things) a full fledged AML parser. Mr @jackpot51 was busy improving the debugging code, implementing events on pipe (which in turn adds up to mio
s crate support AKA: this small sample now works in Redox). He also fixed the mapping of TLS (which now page aligned) as well as improved error information and cleaned the interrupt macros.
On the Ion front @glowing-chemist added support for polish notation, also, and thanks to @mmstick Ion now supports 8 color, 16 color, 256 color, and 24-bit color using standard ANSI encodings. He also added support for the $SWD
and $MWD
environment variables. A new exists
builtin was added by @BafDyce and @nivkner made some refactoring on the match
statements. But changes don’t stop there, read the details and you will see that there is a lot of other interesting stuff ni there!
The drivers saw a bunch of updates and fixes mostly by @jackpot51 who made some fixes to pcid
, a change on Intel8254x
network driver in order use a spin for reset instead of yielding along with the addition of a method for resizing display in bgad
. He also disabled the XHCI
driver due to lockups and removed some unused extern crate
s statements.
The RedoxFS got some attention from @ids1024 who made it not an error to open a directory without O_DIRECTORY
or O_STAT
, and futimens
not to require O_RWONLY/O_RDWR
. Also, we are temporarily using a nightly
friendly version of the spin
crate.
TFS land was visited by @ticki and among the highlights are: the introduction of a new control-flow
crate to control control-flow outside closures, a fix for several compile errors in atomic-hashmap
, the addition of conc::Guard::{try,maybe}_map
followed by the switch to parking_lot
in conc
.
The cookbook (our collection of packages) was also very active during this period! @7h0ma5 added recipes for ncurses
and readline
while @ids1024 added one for perl
and @xTibor added ffmpeg
. python
was updated to a new version and a new --debug
argument was added to cook.sh
(the package builder). Last but no least! @AgostonSzepessy added support for dependency info to packages. Nice!
Also, there are big news in coreutils: We are now using coreutils versions of the utilities where it makes sense. For example: @ids1024 removed our versions of chmod
, env
, and ls
opening room for the better versions on uutils
(our fork of coreutils
). While all of that was being done, @dabbydubby was improving pwd
’s description, reformatting, restructuring and fixing few bugs in mv
and afterwhile porting those changes over to cp
.
Finally on the GUI side of things Orbital experienced bunch of unused code removal and improvement of z-buffering (by @jackpot51) while Orbtk saw the birth of a new file dialog, got the ability to convert an orbclient
window into an orbtk
one, the addition of borders around menu entries and some fixes on textbox’s scrolling.
Bonus: Few days ago we saw this message from @jackpot51 on the Redox chat: “Gentlemen, I am going to port libservo”. Yes! some libservo
work is on the way <3
Bonus 2: I also woke up one day and saw this MESA fork.
Exciting times! Aren’t they? Stay tunned for more!
Kernel
The Redox microkernel.
- @ids1024 Added support for arguments in
#!
. Details here. - @jackpot51 Fixed the PIT. Details here.
- @jackpot51 Made
syscall
a submodule. Details here. - @CWood1 Fully implemented AML parser, and did many improvements to the ACPI infrastructure. Details here.
- @jackpot51 Removed warnings, improved error information and cleaned up interrupt macros in ACPI. Details here.
- @jackpot51 Fixed the mapping of TLS. It is now be page aligned. Details here.
- @jackpot51 Implemented events on pipe, added syscall name debugging and update debugging code. Details here.
- @ids1024 Commented out system call debug printing code. Details here.
- @jackpot51 Updated debugging code. Details here.
- @jackpot51 Changed
unreachable
toenosys
. Details here. - @ids1024 Temporary overrode
spin-rs
. Details here. - @jackpot51 Updated dependencies. Details here.
- @jackpot51 Implemented a more efficient live filesystem method, reduce kernel heap to 64 MB and fixed an issue in
build.rs
. Details here. - @L3nn0x Correct small bug in memcpy 32bits implementation. Details here.
Ion
The Ion Shell. Compatible with Redox and Linux.
- @glowing-chemist Added support for polish notation. Details here.
- @jwarner112 Reformatted the manual based on Rust book (2nd edition). Details here.
- @BafDyce Fixed broken & missing links in documentation. Details here.
- @mmstick Implemented string method plugins support. Details here.
- @jackpot51 Fix Redox support. Details here.
- @mmstick Added color namespace with 8/16-bit color support. Details here.
- @BafDyce Fixed syntax error in
src/shell/variables.rs
. Details here. - @BafDyce Added the
exists
builtin. Details here. - @mmstick Enabled setting multiple color parameters. Details here.
- @mmstick Implemented 256-bit colors support, colors are defined via hexadecimal values. IE: 4E or 4Ebg. Details here.
- @mmstick Refactored, documented, and fixed a panic in colors. Details here.
- @chrisvittal Changed
time
from builtin to a shell keyword. Details here. - @mmstick Added colors tests & enable decimal notation. The ‘c’ namespace is now a shorthand for ‘color’. Hexadecimal color notations now require to be prefixed with ‘0x’. Details here.
- @BafDyce Implemented
exists
builtin command (#504). Details here. - @mmstick Implemented 24-bit true color support. Details here.
- @mmstick Updated prompt. Details here.
- @mmstick Implemented
Ion
docs launch support. We now have asetup.ion
script for performing more advanced setup/installations. If the documentation is installed, it is accessible via the ion-docs builtin. This requires that the user specifies a BROWSER variable. . Details here. - @mmstick Implement
$SWD
and$MWD
variables.SWD
: Simplified Working Directory – the default that most prompts use andMWD
: Minified Working Directory – the default thatFish
uses. Details here. - @glowing-chemist Added a fallback to polish notation in calc. If the supplied expression doesn’t match standard notation, try Polish (prefix) notation. Details here.
- @BafDyce Allowed user to prevent commands from being saved in history. Details here.
- @BafDyce Fixed a small error in readme. Details here.
- @drosseau Added a –version flag. Details here.
- @mmstick Enhanced Assignment Parsing. Details here.
- @mmstick Completed assignment type checking. Details here.
- @mmstick Added methods documentation. Details here.
- @mmstick Documented the new assignment logic. Details here.
- @mmstick Completely revamped function & assignment parsing. Function assignments now work the same as assignments in general. Assignments now instead take the expanded value into consideration when comparing types and the pre-expanded value determines arrayness. Details here.
- @mmstick Fixed a test. Details here.
- @mmstick Add more unit tests to functions. Details here.
- @mmstick Implemented case bindings support. Details here.
- @mmstick Fixed array checks. Details here.
- @mmstick Implemented conditional support with match cases. Details here.
- @mmstick Refactored some work. Details here.
- @bb010g Set rust-toolchain for latest nightly. Details here.
- @nivkner Refactored
match
statements. Details here. - @nivkner Made a change to distinguish between environment and local variables. Details here.
- @nivkner Re-enabled ignoring commands in history. Details here.
- @chrisvittal Changed time from builtin to shell keyword. Details here.
- @jackpot51 Used fork of app-dirs-rs with support for Redox. Details here.
- @mmstick Protected vars & improved assignment errors. Details here.
- @mmstick Addressed compiler warnings. Details here.
- @mmstick Disabled namespace plugins by default. Details here.
- @mmstick Disabled plugins for root. Details here.
- @aeosynth Updated
README.md
. Details here. - @aeosynth Updated
README.md
as nightly is required for compiling. Details here. - @KaKnife Updated build.rs (#553) \n Nightly is required for compiling. Details here.
- @jackpot51 Updated Redox support. Details here.
- @jackpot51 Fixed Redox
watch_foreground
. Details here. - @mmstick Applied
rustfmt-nightly
across the entire project. Details here. - @mmstick Applied more further
rustfmt
improvements. Details here. - @mmstick Made a change so public items now have crate-level visibility. Details here.
- @nivkner use
c_char
for plugin arguments instead ofi8
. Details here.
Drivers
Redox OS Drivers
- @jackpot51 Updated
mut
usage invesad
. Details here. - @jackpot51 Updated
config.rs
inpcid
. Details here. - @jackpot51 Updated
main.rs
inpcid
. Details here. - @jackpot51 Used a spin for reset, do not yield in the
Intel8254x
. Details here. - @jackpot51 Added the ability to query
BGA
. Details here. - @jackpot51 Added method for resizing display in
bgad
. Details here. - @jackpot51 Disabled the
XHCI
driver due to lockups. Details here. - @jackpot51 Removed unused
extern crate
. Details here. - @jackpot51 Removed unnecessary
extern crate
. Details here. - @jackpot51 Fixed static on the Intel HDA driver. Details here.
Redoxfs
The Redox Filesystem
- @ids1024 Made it not an error to open a directory without
O_DIRECTORY
orO_STAT
. Details here. - @ids1024
futimens
: do not requireO_RWONLY/O_RDWR
. Details here. - @jackpot51 Updated Cargo.lock. Details here.
- @ids1024 Removed unused import causing lint. Details here.
- @jackpot51 Used
nightly
friendly spin. Details here.
TFS
Next Generation File System
- @ticki Fix several compile errors in
atomic-hashmap
. Details here. - @ticki Added
conc::Guard::{try,maybe}_map
. Also added tests for it andGuard::new
et al. Details here. - @ticki Introduced
control-flow
, a crate to control control-flow outside closures. Details here. - @ticki Added
defer!()
as shortcut fordefer!(())
incontrol-flow
. Details here. - @ticki Switch
conc
toparking_lot
Mutex instead of spin locks. Details here. - @ticki Fixed some compile errors in
atomic-hashmap
. https://twitter.com/ticki_/status/901478579925602304. Details here. - @ticki Removed the last errors and warnings from
atomic-hashmap
. Details here.
Cookbook
A collection of package recipes for Redox.
- @ids1024 Patched
patch
to not to callchown
. Details here. - @ids1024 Passed -p to cp, to make running autotools unnecessary. Details here.
- @7h0ma5 Added a recipe for
ncurses
. Details here. - @7h0ma5 Added a recipe for
readline
. Details here. - @ids1024 Added symlinks to
uutils
package. Details here. - @Nickforall Fixed
ncurses
failing to compile. Details here. - @ids1024 Simplified
git patch
a bit. Details here. - @ids1024 Added
--debug
argument tocook.sh
in order to build in debug mode, unstripped. Details here. - @ids1024 Used release tarball for
curl
, with a couple patches. Details here. - @ids1024 Bumped
python
version. Details here. - @jackpot51 Added
-i
toautoreconf
forcurl
. Details here. - @ids1024 Added a recipe for
perl
. Details here. - @ids1024 Made a couple of fixes for Perl, and added initial recipes for
automake
andautoconf
. Details here. - @jackpot51 Pulled forked
pastel
. Details here. - @xTibor Added
ffmpeg
recipe. Details here. - @xTibor Removed unnecessary disable
ffmpeg
flags. Details here. - @jackpot51 Use
-unknown
forgcc
andg++
. Details here. - @xTibor Switched
ffmpeg
to a working release branch, fixed hardcoded arch. Details here. - @jackpot51 Fixed tabulation, allowed recipe override of
DEBUG
. Details here. - @jackpot51 Added slashes after source and build to support symlinks. Details here.
- @AgostonSzepessy Added support for dependency info to packages. Details here.
Userutils
User and group management utilities.
- @jackpot51 Updated Cargo.lock and Cargo.toml. Details here.
- @andre-richter Fixed unused extern crates. Details here.
Coreutils
The Redox coreutils.
- @jackpot51 Removed extra
mut
intr
. Details here. - @ids1024 Remove
chmod
,env
, andls
, whichuutils
has better versions of. Details here. - @jackpot51 Updated Cargo.lock and Cargo.toml. Details here.
- @jackpot51 Fixed
extern crate
s everywhere. Details here. - @dabbydubby Changed
pwd
’s description from “return working directory name” to “print working directory”. Details here. - @ids1024 Used the released version of
filetime
. Details here. - @dabbydubby Reformatted, restructured and fixed few bugs in
mv
. Details here. - @dabbydubby Ported changes from mv.rs to cp.rs. Details here.
Netstack
Redox OS network stack.
- @jackpot51 Updated Cargo.lock. Details here.
- @jackpot51 Added debug messages and updated lock file. Details here.
- @jackpot51 Made a change to send events on connect in
tcpd
. Details here. - @jackpot51 Updated dependencies and a better implementation of C socket. Details here.
Netutils
Network Utilities for Redox.
- @ids1024 Use
pbr
forwget
’s progress bar. Details here. - @jackpot51 Updated Cargo.lock and Cargo.toml. Details here.
- @jackpot51 Removed unused import in
telnetd
. Details here. - @jackpot51 Added debug implementations. Details here.
Extrautils
Extra utilities for Redox (and Unix systems).
- @bblancha Added support for
tar
for processing symlinks. Details here. - @ids1024 Added support for
tar
to set file times. Details here. - @ids1024 Tried to fix travis by installing
liblzma
. Details here. - @ids1024 Installed
lzma
withno-sudo
method. Details here. - @ids1024 Added support for
bzip2
extraction in tar. Details here. - @jackpot51 Updated Cargo.lock and Cargo.toml. Details here.
- @jackpot51 Updated lock file. Details here.
- @jackpot51 Patched termion to fix
less
. Details here. - @jackpot51 Update
libpager
. Details here. - @jackpot51 Update to new
termion
. Details here.
Orbital
Redox Windowing and Compositing System.
- @jackpot51 Removed
mut
s. Details here. - @jackpot51 Removed unnecessary
mut
s. Details here. - @ids1024 Added scheme to
PATH
. Details here. - @jackpot51 Updated Cargo.lock. Details here.
- @jackpot51 Made some work on zbuffer support. Details here.
- @jackpot51 Fixed zbuffer calculation. Details here.
- @jackpot51 Replace front with first for
Vec
. Details here. - @jackpot51 Fixed some rendering issues. Details here.
- @ids1024 Removed unused imports that were triggering a lint. Details here.
- @jackpot51 Removed the background from config. Details here.
Orbtk
The Orbital Widget Toolkit. Compatible with Redox and SDL2.
- @jackpot51 Fixed some list bugs. Details here.
- @jackpot51 Added a WIP of a file dialog example. Details here.
- @jackpot51 Added the ability to convert an
orbclient
window into anorbtk
one. Also fixed list logic. Details here. - @jackpot51 Removed prints. Details here.
- @jackpot51 Added a file open dialog. Details here.
- @jackpot51 Released 0.2.21. Details here.
- @jackpot51 Updated documentation. Details here.
- @jackpot51 Released 0.2.22. Details here.
- @jackpot51 Fixed docs badge. Details here.
- @jackpot51 Added borders around menu entries. Details here.
- @jackpot51 Fixed textbox scrolling. Details here.
- @jackpot51 Released 0.2.25. Details here.
- @jackpot51 Removed print. 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.
- Andre Richter 🎂
- Brayden 🎂
- Bob Sun 🎂
- Christopher Vittal 🎂
- Fabian Würfl 🎂
- Jacob Humphrey 🎂
- James Campos 🎂
- Jeff Warner 🎂
- Jonathan 🎂
- Josh Leverette 🎂
- Ken Reese 🎂
- Mihal Malostanidis 🎂
- nivkner 🎂
- Oliver Smith 🎂
- Thomas Gatzweiler 🎂
If I missed something, feel free to contact me @goyox86 or send a PR to the Redox website.