This PR extends `Std.Channel` to provide a full sync and async API, as well as unbounded, zero sized and bounded channels. A few notes on the implementation: - the bounded channel is inspired by [Go channels on steroids](https://docs.google.com/document/d/1yIAYmbvL3JxOKOjuCyon7JhW4cSv1wy5hC0ApeGMV9s/pub) though currently doesn't do any of the lock-free optimizations - @mhuisi convinced me that having a non-closable channel may be a good idea as this alleviates the need for error handling which is very annoying when working with `Task`. This does complicate the API a little bit and I'm not quite sure whether this is a choice we want users to give. An alternative to this would be to just write `send!` that panics on sending to a closed channel (receiving from a closed channel is not an error), this is for example the behavior that golang goes with. |
||
|---|---|---|
| .. | ||
| bench | ||
| compiler | ||
| elabissues | ||
| ir | ||
| lean | ||
| pkg | ||
| playground | ||
| plugin | ||
| simpperf | ||
| .gitignore | ||
| common.sh | ||
| lean-toolchain | ||