Flowtype has horrible performance, which in my opinion partially explains why it has lost so many users to Typescript, which has much more predicable and fast performance even though it's written in JS. The project is basically dead
Darklang is being rewritten to .Net because they were unsatisfied with the OCaml ecosystem.
Horrible performance is generally more a question of algorithms and software architecture than a problem with a language, which only account for a flat percentage of performance.
About Flow, I've never used it so I can't say, but Rescript (which is written in OCaml) compiles 10 to 100 times faster than Typescript.
It's also not memory safe. It's very easy to crash the process.
Also, regarding memory safety, it's not as safe as Rust - it's basically only memory-safe in the single-threaded context, but it's still relatively safe compared to other languages.
I don't really find it easier to crash than Rust - thanks to optionals you get the same guarantees against NPE's. You can choose not to take advantage of it, but you can also force-unwrap in Rust if you want.
In fact I would like to be able to integrate Swift and Rust so that I could also use Rust in my iOS and macOS apps directly. But for now and for the types of applications that I am currently working on it is not worth going down that particular route. But in the future I wish to write some games where I want to write all of the game logic in Rust and use Swift + Metal for the rendering.
When we want to avoid the GC we know how, when we want the productivity we use the GC and fuggedaboutit
That's perhaps not the best wording.
Nonetheless, I do agree with you. D can be very flexible in that regard.
Having spent 20 years mostly working in GC languages, it's totally worth it! However, writing portable libraries like SQLite or libpng are very difficult to do without bringing in unacceptable overhead for your consumers.
In the perf site you can see some examples: https://perf.rust-lang.org/
In Swift, type inference is one thing that can be extremely slow.
There seems to be a pattern here. I'm not saying that LLVM is bad, in fact if it's used by so many projects it's for a reason. But it does have a cost.
Eventually as optimization point, for the few use cases where the ultimate performance is needed, provide a subset of borrow checker capabilities.
Examples of current efforts into this direction, D, Swift, Haskell, Chapel, some .NET ongoing research.
Reframing the system in this way will (hopefully) make things be flexible enough to Just Work™ without surprises, while providing the same guarantees as the current borrow checker. The video itself has a motivating example or two that shows where this stuff would be helpful.