Would have assumed the Kernel would be where Rust truly shines, but that's where it's blocked, which is... interesting!
Would have assumed the Kernel would be where Rust truly shines, but that's where it's blocked, which is... interesting!
Even with this relative improvement, though, I question if it's enough to overcome the shorter compile and test loop the other languages have, or the mental overhead of managing lifetimes and ownership.
It was checked into git yesterday.
For an os project fully in rust and targeting end users, check out: https://www.redox-os.org/
This is going to bite us ALL in the future because it will saddle other languages with a useless set of constraints long after C++ gets removed from a project.
How is that not a stable ABI?
Because it's an ABI with several severe constraints, especially around the more OO features and templates, plus the solutions introduce even more abstractions: https://community.kde.org/Policies/Binary_Compatibility_Issu...
Most higher level languages (java, c#, python) handle most of those much better, albeit with a different set of trade offs. Things like adding a private field to a class won't break binary compatibility in a c# apllication. C++ is fairly unique in that it tries to be high level and tries to be low level but the cost is it pushes the complexity of this split personality onto the developers.
[1] I could see the committee standardizing some intermediate portable representation requiring installation time or even JITing in the future though.
You can say it's good enough (most of the time), but it isn't really a standard, unless I am mistaken.
> 9.1 C++
> For the C++ ABI we will use the IA-64 C++ ABI and instantiate it appropriately.
The Itanium ABI is the official C++ ABI on Unix systems. (Note that this same document officially documents the C ABI).
The standard library ABI it is not covered the the Itanum ABI (outside of some basic functionality), but it is defined necessarily by the platform. For linux that would be libstdc++.
The LSB references the Itanium ABI and defines libstdc++ as the ABI for the C++ standard library on linux platforms; it is again not an ISO standard, but it is as close as you can get on Linux.
And of course the C++ ABI being a very complex and both the ABI document itself and compilers have bugs from time to time, especially if you live close to the bleeding edge.
I don't think Rust, Dart, or Go are any better.
In practice it seems C++'s ABI is called "protocol buffers".
https://fuchsia.googlesource.com/fuchsia/+/master/docs/devel...
There is a stable ABI inside some OSes, moreso than any wannabe C++ replacements.
Speaking of which, Rust is a very nice language, but still lacks many productive tooling that systems developers came to expect.
If anything this rationale is great input for the Rust community, how to improve the ecosystem.