It's clear that you can have any sort of channel, or all possible combinations, and end up with a language usable for typical problems. Any single primitive works to build all the rest. So, this isn't a question of whether users are allowed to code the way they want to. It comes down to a question of what and who Rust is for.
A systems language meant to implement rigorously specified designs needs to be as rigorously specified itself -- a huge job, at best. For that, it needs a primitive with behavior that can be completely and precisely expressed for all runtime conditions. Anything else that can be built using the primitive can go in libraries that a rigorous design need not depend on. If performance matters, then the primitive chosen should impose no overhead for features not needed in the simplest, fastest use case. It's easy to add features and overhead. It's not just good luck that the primitives that are simplest to specify usually are also fastest. Nathan Myers _______________________________________________ Rust-dev mailing list Rust-dev@mozilla.org https://mail.mozilla.org/listinfo/rust-dev