Has Rust been crafted with all these use cases in mind?
In fact, it's been specifically designed to allow you to reason about your program's low-level behaviour even more effectively than with C, by specifying much less undefined behaviour for the compiler to play around with than the C spec.
Even -nostdlib is non-standard GCC (and maybe clang?) extension
IMHO, imcompatibility with shitload of pre-existing libs is a disaster.
Bindings in rust aren't like bindings in other languages. Rust's compatibility with C libraries is very similar to C++'s and Rust bindings exist mostly to enforce invariants and bridge the gap between how idiomatic C and idiomatic Rust do things. (eg. A wrapper around a database library would hook it up to Rust's RAII-style model for closing handles when they go out of scope.) Given that one of Rust's design goals is "zero-cost abstraction", the compiler's also very good at optimizing the wrappers to code at least as good as what you'd hand-write. (In the case of iterators, for example, you get safety without bounds checks because the compiler can prove, at compile time, that they're unnecessary. In addition, the closure-based API gets optimized to the same code you'd get by writing a for loop without closures.)
And who told I want it to download some crap from network without my consent? Then, what about centralized locations and means of override? Could I have my own repos/lists, getting all Mozilla spiggots out of the way? If no, I wouldn't touch it with 10' pole for the time being. Getting locked down on centarlized repo/list managed by Mozilla thing is absolutely last thing I may want.
Comment