Narrow convert
methods to reduce invalidations
#172
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This package caused >1000 invalidations for DifferentialEquations.
The main problem is a pair of
convert
methods: one is redundant witha method in Base (and needlessly invalidates some code),
and another intersected with signatures like
convert(Base.SHA1, ::Any)
and other crazy types.The reason is because the
T
inAPL{T}
is completely unconstrained,and consequently it's possible in principle for it to be a
REPLTerminal
or aModule
or whatever. It didn't seem as if that werethe real intent of the convert method, but I'm just guessing that this won't break anything.
I have not run the full tests locally but 🤞
CC @ChrisRackauckas
Some background in another package: JuliaData/CategoricalArrays.jl#177