I have this medium-sized industrial model written in ModelingToolkit, optimized via Optimization.jl. When I run it (warm) in my environment from January 22nd, it completes in less than a second. However, after updating my environment this morning, it now takes minutes to run, and hits MAXITERS (so it’s not just generic slowness; algorithmically it’s doing something different).
There’s a specific question here of “does anyone have any idea what happened in the ecosystem between Jan22 and today, that might be the culprit?”
But the broader question is how to deal with this kind of issue. If this was a problem with a “normal” package, I would either produce an MWE, or bisect that package’s commit/version to find the problematic commit. However:
- Slimming our code down to an MWE is always an hours-long ordeal. Regular Julia code can be divide-and-conquered easily, but MTK models have complex interactions that make this very messy (and the JIT cost of each change is 30s+).
- MTK+Optimization.jl have hundreds of dependencies. How, how, how am I supposed to bisect the problematic package/commit, if I don’t even know which package is at fault? Precompilation alone takes 5minutes+ on my laptop.
Are there tools that people use to help? I’ve often wished I could Pkg.update(; at_date=Date(2026,1,22)) and resolve to all the versions at the specific date. That way I could surely bisect the package update that broke my code. But it does not seem like that functionality exists?
What do people do?