aboutsummaryrefslogtreecommitdiff
path: root/docs/ASYNC.md
blob: 5b9fa7e870891aab9f9b8af9c2a7df355122d78a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Asynchronous Programming

I don't know enough about asynchronous programming to get started with this section.

Existing systems to learn from:
- https://github.com/status-im/nim-chronos
- https://journal.stuffwithstuff.com/2015/02/01/what-color-is-your-function/
- https://tokio.rs/tokio/tutorial
- https://morestina.net/blog/1686/rust-async-is-colored
- https://ziglearn.org/chapter-5/
- https://kristoff.it/blog/zig-colorblind-async-await/
- https://en.wikipedia.org/wiki/Async/await
- https://old.reddit.com/r/elixir/np688d/

Asynchronous programming is hard to design and hard to use. Even Rust doesn't do a great job. It *shouldn't* need built-in language support - we should be able to encode it as a type and provide any special syntax via macros. Note that async is not just threading! threading is solved well by Rust's rayon and Go's (blugh) goroutines.

Is async worth having separate from effects?