Decision records

View Source

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.

#DecisionSince
0001One pthread per context, NIFs only enqueue3.0.0
0002Three callback delivery paths, chosen by the calling thread3.0.0
0003Callback results cross as external term format4.0.0
0004Isolation is a child OS process over a Unix socket5.0.0
0005The isolated context process is a gen_statem5.0.0
0006Bulk data through iommap regions, handles as plain tuples5.0.0
0007One execution path per mode; the legacy API is removed5.0.0
0008Pipe I/O is non-blocking, deadlined and waited with poll3.1.0, 5.0.0