The thread Case Study: Method Invalidations caused by Pkg.jl with Julia 1.11 ended up answering a problem here:
Specifically here, given the importance of Symbolics in the Julia ecosystem, the meaning of function names doesn’t always match the mechanical use of those functions. Setting a contract that requires ==
to return a Bool
would be problematic for them.
I am certainly no Core Developer, so I don’t pretend to know the tradeoffs for serving different use cases. But I do wonder if it would be possible to use Cassette.jl to transform all (F)(args...) where F
to (F)(SymbolicCall(), args...)
that could have its own contract, so that “normal” use cases could benefit from the correctness checks that function contracts could provide.