-
Notifications
You must be signed in to change notification settings - Fork 13.4k
Tasks and communication #15713
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
cc me |
/cc me |
Linked failure / thread cancellation doesn't work out well in a native language. The only way to do it is adding failure points where it gets checked, but adding that kind of overhead to Rust's standard library isn't going to be acceptable and it isn't going to be able to reliably fail without the compiler inserting dual use yield points (not going to happen).
Can this be done in a syntax extension? It doesn't necessarily have to live in this repository. |
Indeed, we have largely abandoned the Kill-Safe Abstractions runtime approach to task failure handling, as Rust has moved in a different direction. Below is some info from communication with some external researchers we're trying to convince to look at this problems with us. We'll see if we can come up with a solution that's independent of Rust itself. We have a couple of big challenges with our use of concurrency in Servo today:
We use lightweight tasks (similar to CML threads) heavily to
We would like to at least show deadlock-freedom within our subgroup We're very interested in ideas for tackling these problems. The first |
This issue has been moved to the RFCs repo: rust-lang/rfcs#316 |
…r=Veykril Do flyimport completions by prefix search for short paths Fixes rust-lang/rust-analyzer#15711
Currently, any large program using tasks and channels will have a mixture of deadlocks and unpredictable task failures due to the interaction of task failure, channel communications, and asynchronous communication protocols.
Ideas in this space:
CC: @pcwalton
The text was updated successfully, but these errors were encountered: