[Enzyme lead here, also caveat I only skimmed this thread, so please call me out on anything].
I think it’s important to note here that Enzyme was created by a few grad students, working part time on the project, to build and learn about AD+Compilers – not explicitly to be a replacement or the end solution for Julia AD.
Now, from a variety of other circumstances which include both Enzyme being well-designed (leading to good performance, mutation support, a community larger than just Julia), as well as many of the other Julia AD systems not receiving a lot of love, many have began to see Enzyme become one of the more critical Julia AD systems. However, I think that looking at its history is useful for folks to understand where it is, where it intends to go, and how to help!
In Julia, we’ve always tried to target a smaller set of code and do that extraordinarily well. This began first as basically GPU compatible code – an incredibly strict subset that disallows most Julia features. Almost all of the issues on Enzyme.jl are feature requests to expand that scope and differentiate through more Julia features. We’ve been adding these, but intentionally limit the subset of code we handle (throwing an error if unsupported), expanding out. The biggest of these recently has been the additiion of custom rules, garbage collection, and a significant part of type unstable code. All of these are Julia-specific which require work outside of Enzyme core on the Julia-specific frontend for Julia-specific features (other languages like C, don’t have GC/type unstable code calls). We still also have plenty of new thing’s we’re looking into including BLAS, scheduling etc.
We are a growing community, but almost all of the Julia side of things have been a few people, working part time on this, as funded by specific means. I for example have often been funded by the DOE, so a lot of my time on Julia work has been to advance those who paid my PhD stipend, which were scientific computing use cases. I’d love to (and think it should be fairly quick) to add good ML support within Julia and Enzyme, but that’s not where my personal funding was coming from, so that hasn’t been a priority for me personally as a result.
That also said, I have now graduated and am starting a new position as a Prof of CS at Illinois, so if anyone does have funds (or wants to apply for a grant together) on compiler based AD, or other related things, please reach out (and we can try to accelerate getting things done)!