Async isn’t new in programming language theory. It’s a syntax sugar for state machines and continuations. I think it could be argued that PLT was already way ahead of async/await – monads are more general than futures, and Rust’s async wasn’t generalized to be an effect system.
Also it’s simply not true that async wasn’t fully understood or carefully evaluated. It took years to design, and then bikeshed every detail, to the point people involved were burned out. It had multiple prototypes, and an early callback-based implementation used by hundreds of libraries, in production, for over a year. It’s probably the most thoroughly designed and tested feature in Rust’s history.
There’s definitely a network effect that makes everyone converge on tokio.
However, I don’t think the situation can be improved by putting an executor in std. That will even more strongly make everyone stick to the standard one.
The problem isn’t that it’s hard to pick an executor (you can pick tokio without thinking). The problem is that when someone has a legit reason to use a different executor, it’s hard to avoid dependencies using tokio, and it would be even harder to avoid dependencies using a built-in executor.
There are two cases in Polish where inaccurate translations in Windows have changed the Polish language.
Font has been translated as "czcionka", which in Polish originally meant sort (a metal block for a single letter).
Cancel has been translated as "anuluj" (to revoke, abolish).
This happened at the time when computers have exploded in popularity in Poland, and the terms have been assimilated along with all other computer jargon. Later attempts to correct the translations ("krój pisma", "poniechaj") have failed due to sounding like a pedantic deviation from an already established terminology. So Polish message boxes have [OK] and [Abolish] buttons.
Microsoft is adopting, integrating, and sponsoring Rust, but they have 40-year-old codebases maintaining bug-compatibility, so they’re not going to just drop all that legacy C++ code.