-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
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
make inference of _apply
match the implementation more closely
#30483
Conversation
Interesting failure on travis 32-bit:
Maybe there's a type that's not rooted during codegen? |
Ref. #27434 (comment) |
I think what's happening is that Core.Compiler only splats types with special built-in support: tuple, array, and simplevector. But inference abstractly calls |
9d5332b
to
d158fbb
Compare
Ok I switched to that alternate approach. |
iterate
relative to calling module in inference_apply
match the implementation more closely
This doesn't backport cleanly. Please push a commit to #30954. |
Removing from backport since backport hasn't been done in 2 months. |
I have stumbled over this bug again (after having a 'Unreachable Reached' error, I did a git bisect and it is the commit 41c0c2f that solved the problem for me). I am using Julia 1.0.5 exactly because it is a long term support version (I am making the code of my PhD reproducible in the long term). I have posted in the Discourse for help first. It is impossible to backport? I really shouldn't take much time of my PhD but if it was question of one or two days maybe I could give it a try. |
Your PhD code is just as reproducible with e.g. Julia 1.4 as with Julia 1.0.5? The LTS is for people with extremely conservative requirements on Julia upgrades (such as running old code in production). The vast majority of users should use the latest release. |
Ok, seems I misunderstood what was the purpose of the LTS version. I consider my requirements somewhat conservative (this is, I want a version that will be easy for someone to obtain in 5~20 years in the future), but I can take some extra steps and keep a repository of the source code and prebuilt binaries for this intermediary version just in case. I have no qualms with finding some critical errors if they are clearly at language fault (and I can work around them) and are not undefined behavior that may give me some wrong value that will end up in my paper. |
The purpose of a LTS release is if you need things like security that mean that you need updates that won't break code. For something like this, what you need is to tell people to just use 1 particular version of the language. They don't need it to be an updated and patched version which is what the 1.0.x branch provides. |
Right. It's not like we're going to delete Julia 1.3.1 at some point in the future and hunt down ever copy that's ever existed. We just aren't going to keep patching it forever. So for reproducibility, using the LTS is not really relevant—just document which Julia version you used. Note that 1.0 is not going to be the LTS version forever, it's very likely that 1.5 or 1.6 will be the new LTS later this year, at which point we will stop making 1.0.x releases. But that doesn't reduce the reproducibility of those versions at all—they will still be available and will still continue to work. |
This fixes the crash in #30470.