It’s for code transformation. In fact, I’m trying to estimate effort required to implement something like Zygote or Capstan, but simpler (I’m trying to make a huge focus on simplicity these days, even trading it for a number of features). My latest beast in AD zoo is Yota.jl which is based on old school method dispatching (very much like ReverseDiff), but maybe it’s time step forward in complexity again.
I tried Cassette like 3 or 4 times, mostly before Julia 1.0, but then it was too much of a moving target for me to rely on it. Now I still see a disclaimer it its docs:
For now, each individual version of Cassette can technically only support a single specific version of Julia at a time ; differing by even a patch version could (theoretically) break Cassette entirely.
Cassette enables interaction with many parts of the Julia compiler, a lot of which are undocumented or sparsely documented.
Is API and runtime of Cassette stable enough for somebody not involved into development of Julia compiler or Cassette itself to implement AD on top of it?