Why the code is the way it is, one decision per file, in the order they were taken. Read the record before changing what it decided; if the reasons no longer hold, write a new record that supersedes it rather than editing the old one. Each record has the same four parts: the situation, what was decided, what it costs, and where the code is.
| # | Decision | Since |
|---|---|---|
| 0001 | One pthread per context, NIFs only enqueue | 3.0.0 |
| 0002 | Three callback delivery paths, chosen by the calling thread | 3.0.0 |
| 0003 | Callback results cross as external term format | 4.0.0 |
| 0004 | Isolation is a child OS process over a Unix socket | 5.0.0 |
| 0005 | The isolated context process is a gen_statem | 5.0.0 |
| 0006 | Bulk data through iommap regions, handles as plain tuples | 5.0.0 |
| 0007 | One execution path per mode; the legacy API is removed | 5.0.0 |
| 0008 | Pipe I/O is non-blocking, deadlined and waited with poll | 3.1.0, 5.0.0 |