upvote
Re: async in traits, the feature was delayed because it relied on the "Generic Associated Types" and "Impl Trait in Traits" features. If Rust delayed the whole `async` feature for working on those pretty type-theoretic features what would you have thought?
reply
Well in practice the async_trait crate worked just fine. If Rust delayed the whole async feature I'd have thought they'd have better been able to handle the function coloring problem via something like OCaml's algebraic effects rather than following the trend of JS and C# back then, as OCaml's came along much later after more research into the model.
reply
This inevitably happens when the approach to language design is "try it and see". I know people here hate design-by-committee, but historically it's led to some very cohesive languages.
reply
> design-by-committee

I don't think it is about having committee, but rather having a spec. And I mean spec, not necessarily ISO standard. There should be a description of how specific features work, what is expected behavior, what is unexpected and should be treated as bug, and what is rationale behind specific decision.

Coincidentally people here hate specs as well, and that explains some things.

I know there is some work on Rust spec, but it doesn't seem to progress much.

reply
AIUI, that is what the MIR formalization work is about, and it seems to be moving along fine. My impression is that covers essentially all the interesting parts of Rust worth specifying formally.
reply
> I know people here hate design-by-committee, but historically it's led to some very cohesive languages.

C++ is not cohesive at all

reply
I didn't say this applies to every committee, but I do think the opposite applies to almost every "try it and see" language.

Examples of cohesive languages designed by committees would be Ada and Haskell.

reply
Haskell is anything but cohesive, depending on which feature flags are enabled on GHC, or any other compiler.
reply
Well ok ... experiment but maybe unlike c++ we could have added N keywords removed M keywords for arguably net-simpler language.

Geez I'd hate to be in rust dev shoes if I can't remove something later when I have a better better min/max. I guess this could be done off main, stable.

reply
Rust is also design-by-committee.
reply
Yes, however how many of them are used in production to some level of scale (not even to the scale of Rust)? Stroustrup's quote and all that.

Rust's development process is also design by committee, interestingly enough.

reply
> Rust's development process is also design by committee, interestingly enough.

Sure, but it's still quite informal and they just add things as they go instead of writing a complete standard and figuring out how everything interacts before anything is added to the language. Design-by-committee was probably not the best term to use.

reply