This isn't Linux, but Linux-like. Its a microkernel built from the rust programming language. Its still experimental, but I think it has great potential. It has a GUI desktop, but the compiler isn't quite fully working yet.
Has anyone used this before? What was your experience with it?
Note: If this is inappropriate since this isn't technically Linux, mods please take down.
People keep saying this but Rust is not only about memory safety. It's not C with memory safety sprinkled on top. Compare with C and C++ it has better tooling and dependency management, it's easier to create modules and organize your code, it's easier to write tests and it has loads of nice, modern language features like algebraic types and typeclasses. Because of all this Rust is growing fast and a lot of people like it. Writing things in Rust is a bet that more people will get behind them and you will be able to add more features faster to them than to existing projects in C. The idea is not to simply do the same but in Rust. It is to have a cleaner, easier to approach codebase that will allow to grow faster in the future.
It would certainly be interesting to see if an OS written in Rust can end up being notably more reliable and secure. My curiosity is piqued by the features you mention.
Testing the capabilities of rust and proving what rust is capable of.
Seeing what rust is not capable of and proposing improvements for the rust language and ecosystem.
Trying new OS concepts. Linux for example is strongly backwards compatible. Starting a new OS is the opportunity to do things different and maybe better.
Maybe it will turn out, that the memory safety will improve OS'. We will only know for sure, if we try it.
Eh, I welcome the iteration. It gives people a reason to practice and hey, who knows, maybe they'll come up with something neat while rewriting curl or something
This is one of my main gripes with the rust community. What programming language you used shouldn't be of any concern to the end-user, let alone be put in the tagline.
Rust is a very good and capable language and I enjoy using it. I can't wait for the day it overtakes C or C++. But I want to know more about the program I'm using other than that it was written in a popular language.
"Written in rust" is basically a meme at this point.
not necessarily about the language, but things periodically getting rewritten or re-implemented is a useful exercise. it's a moment for reflection and analysis of the structures and systems as a whole
Rust has characteristics that basically represent a value proposition for the user. An OS that can be higher performance, better at concurrency, more robust, and more secure sounds pretty good to me. They could make those claims and I could not believe them or they could tell me it is written in Rust and I would hope for all of them.
Of course, the language is not a guarantee of anything but it does tell you something about the tailwind that this project will have.
Python implies a bunch of things as well. None of those things make it sound great for an OS and I would assume the worst if an OS project told me they were using Python ( for the core ).
Personally, I am very glad that they tell me the project is written in Rust. I am sorry it bothers you.
It sounds like a elective complaint about Rust though as most OS projects tell you the language up front including C and C++. C++ seems especially eager to announce itself as a superior choice to C. I have not done much research but can tell you what language even most commercial operating systems are written in as they are usually pretty open or even vocal about it. Sometimes they are proud of what the did not pick ( see Linus opinions of C++ for example ). Haiku and SerenityOS, in contrast, brag about C++ and have even made YouTube videos about it.
It is not just OS projects either. I mean, why does GitHub display the language used as a standard project feature after all?
Rust is used by modern people to create modern programs. If the program would be in C++ for example, a very complicated, error-prone language, that gives me insight into how well (or not) that program might be supported in the future
I've been installing a lot of things written in rust recently, and I've noticed a trend between them. They're all stable, fast, and very user-friendly. I don't really have to fiddle with them nearly as much. I think there's a lot that goes into this, but it really boils down to: rust is safer and prevents huge categories of bugs, it's incredibly stable and requires less debugging and maintenance, it has extremely high level abstractions to make development quick and less verbose, and it has the best tooling I have seen for any language. It enables developers so effectictively that the things that are usually tedious and difficult become easy and potentially mandatory, and so you just get better software.
I know that sounds pretty abstract and opinionated, but having used the language for several years now, and especially coming from Java, I have really felt an incredible difference - I stopped having to constantly fix breaking Gradle builds and JVM version management, I stopped getting null pointer exceptions, and I had much more powerful tools for building abstractions. When you see how much control and power rust gives you while still keeping you safe, it's just night and day compared to the especially old languages like C.
Basically, anything written in rust will be better if it can enable developers to spend their time working on useful features instead of fixing bugs, fiddling with build systems and fragile legacy infrastructure cobbled together from dozens of third party tools.
The language is newer so it does a lot of things better than C, C++ and even higher level langs like java. It is more probable that people in the future build upon Rust than legacy languages.
Comparable to how it would be misguided now to start a project that only runs on Xorg
From my personal experience I can tell you 2 reasons. The first is that this is the first general purpose language that can be used for all projects. You can use it on the web browser with web assembly, it is good for backend and it also is low level enough to use it for OS development and embedded. Other languages are good only for some thing and really bad for others.
The second reason is that it is designed around catching errors at compile time. The error handling and strict typing forces the developer to handle errors. I have to spend more time creating the program but considerably less time finding and fixing bugs.
That sounds pretty great. I get sick of having to switch gears for every layer. As a hobbyist it is tough to remember five or six languages well enough when only coding something a few times a year.
Since I do embedded, scripting, web front and back end this is sure tempting.
I have been hesitant to try to learn yet another language (this would make...ummm.. idk I lost count ages ago). But with all the hype I may break down and give it a whirl.
I know the evangelists can be somewhat overwhelming, but its popularity is not unwarranted. It's fairly easy to pick up, has an incredibly enthusiastic and welcoming community. People like it because it's incredibly performant, and its memory safe. In terms of DX it's really a joy to work with. It just has a LOT going for it, and the main drawback you'll hear about (difficulty) is really overblown and most devs can pick it up in a matter of months.
The main difficulty I have with Rust (what prevents me from using it), is that the maintainers insist on statically compiling everything. This is fine for small programs, and even large monolithic applications that are not expected to change very often.
But for the machine learning projects I work on, I might want to include a single algorithm from a fairly large library of algorithms. The amount of memory used is not trivial, I am talking about the difference between loading a single algorithm in 50 MB of compiled code for a dynamically loadable library, versus loading the entire 1.5 GB library of algorithms of statically linked code just to use that one algorithm. Then when distributing this code to a few dozen compute nodes, that 50 MB versus 1.5 GB is suddenly a very noticeable difference.
There are other problems with statically linking everything as well, for example, if you want your application to be written in a high-level language like Python, TypeScript, or Lisp, you might want to have a library of Rust code that you can dynamically load into the Python interpreter and establish foreign function bindings to the Rust APIs. But this is not possible with statically linked code.
And as I understand, it is a difficult technical problem to solve. Apparently, in order for Rust to optimize a program and guarantee type safety and performance, it needs the type information in the source code. This type information is not normally stored into the dynamically loadable libraries (the .so or .dll files), so if you dynamically load a library into a Rust program its type safety and performance guarantees go out the window. So the Rust compiler developers have chosen to make everything as statically compiled as possible.
This is why I don't see Rust replacing C any time soon. A language like Zig might have a better chance than Rust because it can produce dynamically loadable libraries that are fully ABI compatible with the libraries compiled by C compilers.
Yes, as much as I appreciate memory safety and rust in particular. I'm very worried by this pivot away from copyleft and GPL. Specially the rewriting in rust phenomenon of fundamental stuff. It's safer, yes, but they're all pretty much non GPL and it seems very risky to me. Make no mistake, the industry is riding this wave to move away from copyleft to permissive licenses.
I wish that people understood the importance of FSF and GNU
I personally like rust, so I get excited when cool things are done with it because each one makes rust just that much bigger, which leads to it being made that much better.
I see projects like that as more of a statement that "rust can do it" than anything.
I want the newest, best software. Is that uncommon? Modern rewrites are often much better than their age-old counterparts since the tech got better over time, compare for example grep vs ripgrep, or find vs fd. The rewrites are much faster and user-friendlier
How long would it take to compile their Rust microkernel alone compared to a similar one done in C? There are many posts around the web complaining about Rust's long compile times, though thankfully rarely as slow as C++
Kinda. Redox uses a microkernel architecture and tries to keep only the most important functionality in ring 0 while they push everything else in userspace. It's great.
I wouldn't say it's inappropriate as there is more and more rust making it into the native kernel. I'll definitely throw this on my Ventoy usb and see if I can get it to boot
Having some hardware mentioned on the site that is supported and ready for use could be helpful if someone wants to try it (say raspberry pi), There are probably people who are worried to will make their computer explode.
I think the main reason Firefox isn't on there is because redox os doesn't use Wayland and x11. Porting firefox would be a massive effort unfortunately.