| ... | ... | @@ -42,30 +42,41 @@ Papers and other docs: |
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# Proposal
|
|
|
|
# Proposals
|
|
|
|
|
|
|
|
|
|
|
|
- Standardise on Concurrent Haskell without STM. It is our view that even in the presence of STM, `MVar`s offer
|
|
|
|
functionality that is distinct from STM and separately useful, so this leaves room for growth.
|
|
|
|
## Proposal 1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- The Haskell' standard does not include concurrency, but includes enough to allow portable thread-safe
|
|
|
|
libraries to be written. (see "thread safe", below).
|
|
|
|
|
|
|
|
- A separate addendum specifies concurrency according to the *fairness* requirements (see below).
|
|
|
|
|
|
|
|
- Use the semantics from [ Extending the Haskell FFI with Concurrency](http://www.haskell.org/~simonmar/papers/conc-ffi.pdf)
|
|
|
|
## Proposal 2
|
|
|
|
|
|
|
|
- Standardise a way to write thread-safe libraries that work with implementations that don't provide full concurrency support.
|
|
|
|
|
|
|
|
## Questions
|
|
|
|
- The Haskell' standard includes concurrency with the *fairness* requirements.
|
|
|
|
|
|
|
|
- A separate addendum specifies how implementations that do not provide concurrency behave: at the least,
|
|
|
|
it should include enough to allow portable thread-safe libraries.
|
|
|
|
|
|
|
|
- Decide whether the Haskell' report includes Concurrency (with a separate NoConcurrency addendum to specify how implementations without concurrency behave), or whether Concurrency is specified in a separate addendum.
|
|
|
|
## Proposal 3
|
|
|
|
|
|
|
|
|
|
|
|
- The Haskell' standard includes concurrency with a weaker version of *fairness*, that is enough
|
|
|
|
to admit implementations with *cooperative scheduling*.
|
|
|
|
|
|
|
|
- A separate addendum specifies concurrency with the full *fairness* requirements.
|
|
|
|
|
|
|
|
## Open questions
|
|
|
|
|
|
|
|
- Decide how much pre-emption is acceptable, and figure out how to specify this.
|
|
|
|
|
|
|
|
- Require bound thread support, or make it optional? (YHC has concurrency with non-blocking foreign calls, but doesn't
|
|
|
|
have bound threads as yet.)
|
|
|
|
|
|
|
|
- Do we require [ForeignBlocking](foreign-blocking)?
|
|
|
|
|
|
|
|
## Thread-safety
|
|
|
|
|
|
|
|
|
| ... | ... | |