Would you mind briefly reiterating what your form of “contextual dispatch” implies? The sharing of this term with what Cassette-like packages implement makes things rather confusing (maybe you can come up with an alternative term for it?). Some things I’d like to have explicitly stated include:
- How it differs from the equivalent term used to describe how Cassette et. al work, i.e. “overdubbing” or “user-defined passes”.
- What problems it’s intended to solve that aren’t already solved well via a different approach (such as with Cassette).
- What will be required to implement it, and where it will need to be implemented (can it be done in a package, or do the changes need to be to Julia’s core?).
- Has anything changed w.r.t your “contextual dispatch” in the months since your original post? EDIT: Here’s the post I’m referring to: MultiFunctions: Context dispatch and binary cache