-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Don't add an edge to Tuple
to the method tables
#42
Conversation
Pull Request Test Coverage Report for Build 10077702409Details
💛 - Coveralls |
I think this is right. Can you also test it on a parametric type constructor. Maybe also test type pirating the tuple constructor. (I am ok with breaking that) |
Thanks for the swift review, @oxinabox! I added the tests you suggested. The Tuple case is a strange one -- upon adding a new method, two new methods appeared, these were the two (I left the comment in the code): # [6] (::Type{T})(nt::NamedTuple) where T<:Tuple
# @ Base namedtuple.jl:198
# [7] Tuple(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z)
# @ Main REPL[5]:1 And it seems that it doesn't happen in Julia 1.3. Any ideas? |
Absolutely wild. Then we can merge this. Please also bump the version to |
Yeah this is consistent between |
Thanks! |
We noticed that
Tricks.jl
were adding an edge toTuple
which was slowing down our package image generation in the verify edges stage, due to expensive method matching; basically doing this:(our sysimage is quite large making the impact of this very pronounced). I believe this is the issue number #7.
SnoopCompile.@snoopr
reported an invalidation ofTuple
and pointed toTricks.static_method_count
. After playing with this package for a bit I put together this PR which seems to fix the problem for us, but to be honest, I'm not very confident that what I've done is entirely correct and robust.Locally the tests were passing as did this toy script:
which produced: