Negative views on Rust ( not mine! )

Wikipedia includes pretty good definitions. System programming language is is a programming language used for system programming. And then system programming is the activity of programming system software.

That's precisely what system programming is. Programming where you may need to care about every allocated byte and every nanosecond (when you are programming low-speed controllers you may only care about milliseconds but if you CPU speed is measured in low single megaheartz not gigahertz milliseconds are a big deal too).

Just to show the difference between applications development world and system programming world: each Linux thread have 16KiB of stack storage (it used to be 8KiB on 32bit platforms but 64bit prompted increase from 8KiB). For everything: TSS data structures, all the deeply nested function calls and many other things. That's system software world. As was way of comparison: in app development world 12KiB of stack are reserved just to handle “Stack overflow” exception!

That is also true and it's certainly true that sometimes it's hard to distinguish. But consider that recent discussion about why using async function pointers requires quite complicated dance in Rust.

This is directly related to the desire to allow to use of async in an environments where you couldn't just go and allocate memory on the whim (this is not just a simple desire: if you program a hard realtime system then you would, natuarally, want to have both async and zero memory allocations in the critical path).

Yes. And as I have said this is both blessing and a curse. It's blessing because it's easier to use language which includes certain high-level features.

It's a curse because it makes language easy enough to use that people are trying to use in places where JavaScript or C# may have been more appropriate choice.

They hit limitations embedded in Rust to serve system software development needs and try to push for the crazy things like addition of GC (which is absolute no-go for system level language).

P.S. And it would be fascinating to know just how and when Rust have become a systems programming language. Because initially it wasn't planned as such: it had a GC, green threads, non-trivial runtime, etc. Yet somehow it ended up being system language first everything else second. Why this switch happened and when?

1 Like