This is the story of C++, one of the world’s most widely-used and consequential programming languages. C++ divides opinion, resists replacement, and has outlasted almost everything built to supersede it.
C++ The Documentary traces the full arc, from its origins in the corridors of Bell Labs to the global community that shapes it today.
Featuring the people who built it, extended it, argued over it, and refused to let it die.
It doesn’t make sense to replace all the C++ code that we’ve got with Rust, solely for the sake of migrating to Rust for it’s benefits. Sure, C++ has it’s flaws. But those could be mitigated.
Good question - C++ will last a long time yet, as the cost of simply converting C++ to Rust is high, I expect. If the demise of COBOL is anything to go by: when I started working COBOL was already considered to be outdated and was expected to be dropped altogether “soonish” - and 40 years on COBOL is still alive and kicking (at least in complex and extensive financial systems.)
It’s all a matter of continuous development. We will see more Rust in the linux kernel. But as of kernel 6.5 it has been more than 38 million lines of code as of August 2023, written in C and Assembly.
I don’t have any numbers specific to Rust within the kernel at this current point in time. But I’m pretty certain that the kernel does contain some modules which haven’t been touched in years. And there isn’t a need to change that.
Even the rewrite of the core utilities is an ongoing effort and it wouldn’t be the right call to migrate to Rust completely. We still need developers that are able to understand and develop the given C codebase. It’s unproblematic (more or less) to implement new modules (such as driver packages) in Rust. But in specific situations it might be wiser to implement it in C and that depends on the individual use case.
uutils is the rewrite of coreutils package using RUST.
eza is a worthy replacement for ls written in rust.
There are many more.
Things would get interesting when the core Linux kernel task scheduler, memory management and the most of the intel x86_64 drivers are rewritten in rust.
It’s an ongoing effort, which hasn’t achieved feature parity yet.
That being said, be aware that it could take easily more than a just a few months for the developers to finish the (re)implementation of coreutils in rust
Sure, ubuntu is already adopting uutils, but only selected parts which are close to their completion, I guess. And as the graph of the uutils unit tests shows: There are still new tests added to the test suite. It’s definitely not a done deal and there might be specific edge cases which are currently not accounted for. Therefore I wouldn’t state that they are already on their last mile.
eza on the other hand is already finished and actively maintained as an alternative to ls. I’m using it on my machine as the default, at least within the fish shell I’ve replaced ls via alias. But one should understand that ls is a much smaller scope than the whole rewrite of coreutils.
this was an hour and 10 minutes of geeking out and they pulled it off. a very well made documentary, I really liked it. thanks for sharing this