You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It's possible but I'm ... generally wary of this. Or at least ambivalent. Go is not the only language that does what it does, there are dozens of languages that experiment in this space. Rust's channels are half-duplex by design, following Erlang's lead. Making them full duplex means:
reduced implementation leeway; you have fewer options on how to implement / optimize. It pretty much has to be an atomically refcounted deque with a lock on its body.
increased inter-task synchronization on all operations; fewer chances to get the locks out of the path
less clear ownership of in-flight data
channels no longer weak, more stuff accidentally kept alive
a dead consumer task no longer means data drops on the floor; it buffers forever instead
Possibly the ownership and buffer/drop (and sync/async) issues can be addressed with a richer channel API. I'm not sure the implementation flexibility or performance issues can be.
Activity
graydon commentedon Apr 10, 2012
It's possible but I'm ... generally wary of this. Or at least ambivalent. Go is not the only language that does what it does, there are dozens of languages that experiment in this space. Rust's channels are half-duplex by design, following Erlang's lead. Making them full duplex means:
Possibly the ownership and buffer/drop (and sync/async) issues can be addressed with a richer channel API. I'm not sure the implementation flexibility or performance issues can be.
brson commentedon Jul 31, 2012
This is not the direction we are going. Closing.
Auto merge of rust-lang#2158 - rust-lang:gesundheit, r=RalfJung
Merge pull request rust-lang#2158 from heiher/vmuh
Merge rust-lang#3664