
@notjack cool! Let me know when you’re ready to show it.

@notjack concurrent ML is standard ML plus threads and first class synchronous channels?

@dedbox plus threads and first class synchronizable events, which I think are more general than channels

Reading the paper now. I think this is the model implemented in axon
.

concurrency model

Pre-emptive lightweight threads and synchronous rendezvous via first class channels.

Heh. axon
started out with buffered asynchronous channels and pre-emptive threads. Synchronous channels are way easier to think about, so less bugs and brittleness.

Had similar issues with pre-emptive threads, strategically twiddled breaks to squash more bugs. Brittleness is still an issue.

Oh, I guess axon
channels are not first class.

They’re managed by filters.

But filters are first-class synchronization primitives used for rendezvous communication, so there’s that.

Ok, so I kinda get concurrent ML now.

@dedbox I’m working off of a couple papers that I can send you if you like

Sure!

@dedbox
- Kill Safe Synchronization Abstractions (https://www.cs.utah.edu/plt/publications/pldi04-ff.pdf)
- Asynchronous Exceptions in Haskell (https://www.microsoft.com/en-us/research/wp-content/uploads/2016/07/asynch-exns.pdf)
- Implementation and Use of the PLT Scheme Web-Server (https://cs.brown.edu/~sk/Publications/Papers/Published/khmgpf-impl-use-plt-web-server-journal/paper.pdf)
- Parallel Concurrent ML (https://www.microsoft.com/en-us/research/wp-content/uploads/2009/09/Parallel-Concurrent-ML.pdf)
- Composable Memory Transactions (https://www.microsoft.com/en-us/research/wp-content/uploads/2005/01/2005-ppopp-composable.pdf)
I haven’t yet bought a copy of the Concurrent Programming in ML book (300+ pages, dang) but I plan to