I am not a fan of what happened here (that is, the OP), but I will chime in on this article. It was written in April 2015, that is, before Rust 1.0. To address some of its main points today:

> Rust is safe indeed but, unfortunately, far from fast.

Today's version of that graph: http://benchmarksgame.alioth.debian.org/u64q/which-programs-...

Rust appears second, after C and before C++.

> And what actually makes Rust safe, by the way?

Yes, a company that makes static analysis tooling is going to claim that their static analysis tools give you the same degree of safety. They don't, generally, due to language semantics. If this was truly a viable path, we wouldn't have created (okay this is a bad word, I mean "Mozilla probably wouldn't be looking to create Servo and instead would have gotten the guarantees for Firefox by using those tools rather than sponsoring Rust's development) Rust in the first place; we would have just used them. (That doesn't mean they're bad of course, but they can't do what rustc can.)

> Even apart from that speed/safety compromise issue, I'm also skeptical about the language's design as such. In particular as regards to the five types of pointers used in it.

This was already outdated information when the article was originally created; that all went away half a year earlier than the post. Doesn't give much confidence that the author actually spent any significant time with Rust.

> Macros used as a crutch to make up for the excessive verbosity caused by the absence of normal exceptions.

This is not what macros are for. One of these macros did exist, and today is a language feature (?). But there are lots of reasons why exceptions aren't used, including by many C++ programs.

> People are idiots and cargo actively encourages downloading packages directly from git repositories, bypassing Crates.io.

I can't speak to this problem at that time, I don't remember it being a thing, but maybe it could have been. Included for completeness :p

> I can generally understand why it doesn't have a decent inheritance and exceptions, but the fact itself that someone is making decisions for me regarding things like that makes me feel somewhat displeased. C++ doesn't restrict programmers regarding what they can or cannot use.

C++ includes or doesn't include lots of language features, this feels like a real stretch.

> Now, since we have taken the path of simplification, why not throw away all those language extensions? The current state of things resembles the Haskell world where every programmer is coding in their own dialect.

I _think_ this is referring to the stability markers, as we have nothing like Haskell's language extensions. If so, well, they exist due to the way the release process works, and so did and were steadily going away when this was written.

> Smart pointers, for you to know, are far not free of charge and do not ensure a fixed time of garbage collection.

"smart pointer" is not synonymous with "reference counting". The answer to this problem is "use an arena", which you can use in Rust just like C++.

> Has anyone seen a strict description of Rust's semantics? Does it have a memory model at least?

This is true, with lots of ongoing work, including millions of Euro of grants to academics working on it. Not quite there yet though. C and C++ had over a decade before they had their respective standards, so we've still got eight years, by that measure.

> I can't but remind you for one more time that the source of troubles is usually in humans, not technology.

This is just straight-up opinion and so isn't really refutable.

Anyway, just saying. In the moment, that article wasn't very good, but today, it's pretty much entirely irrelevant.