Redox and other Rust OS's


#1

I am the creator of Redox, a Rust Operating System https://github.com/redox-os/redox. In recent weeks, Redox has reached a level of stability, and we are preparing for a first ISO release. In order to capture the interest of the Rust community, I would like to have discussions with the Rust and Servo teams, or whomever is interested, about the following:

  • What would your interest be in a Rust OS?
  • What would you like to see a Rust OS accomplish?
  • How might Redox be changed to make development easier?
  • How might Rust be changed to make development easier?
  • What would need to be done to add Redox support to rustc?
  • What would need to be done to port Servo to Redox?
  • Is Mozilla interested in Redox, or any other Rust OS?

And of course, any other questions we would have about Redox, Rust Operating Systems in general, Rust, or Servo.


#2

I think this post suits users better than internals, to be honest. You’ll get a lot more people that way, and it’s a bit more on-topic.


#3

With this post, I am interested in the opinions of Rust developers


#4

Ah sorry! I guess I read too much into the “whomever is interested.” No worries. I should answer, then :smile:

I would prefer a Rust-based solution over a non-Rust based one every chance I can get. Lots of work for that with a desktop OS, though :frowning: That said, with a terminal, vim, and Firefox, my actual desktop needs are very small.

Help prove out that Rust is great at writing the lowest of low-level applications.

I haven’t sent any patches, but I have cloned and built it, and clicked around. Seemed pretty straightforward.

Well, the naked fn work hasn’t landed yet, and I think I saw that you’re working on a fork with it? Other than that, I haven’t worked on Redox, so I can’t be sure.

Well, we have the whole ‘tiers’ support for platforms: https://doc.rust-lang.org/book/getting-started.html#platform-support

So, first step would be porting that necessary stuff over. That’d involve porting libc, if memory serves.

Don’t know anything about these.


#5

Servo OS would pretty much just need drivers (duh), process protection (actual virtual memory could be avoided, since we can just freeze and serialize background tabs when we run out of memory, but we need the security guarantees), and a way to write a SQLite database to permanent storage. Servo itself has/will have most of the operating system services.


#6

Things that Servo needs from the OS include:

  • threads
  • inter-process communication (IPC) — optional; we can just run in single-process mode
  • TCP sockets
  • an OpenGL context for displaying to the screen
  • input events (e.g. mouse, keyboard)
  • a way to load installed fonts (e.g. fontconfig, though we could probably replace this with something built in to Servo)

Various C/C++ libraries used by Servo (e.g. SpiderMonkey, harfbuzz) might have additional needs.