-
-
Notifications
You must be signed in to change notification settings - Fork 269
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
RFC: only auto precompile the added package (+ deps) after an add
operation
#3848
base: master
Are you sure you want to change the base?
Conversation
The current approach aims at having the only thing that should cause load-time precompilation being changes to dev-ed packages. This moves more precompilation back to load time, when deps of other packages are changed by an add, which IMO would be a UX regression. But perhaps this is popular? Personally I prefer the current arrangement and using the tiered_installed resolve strategy. Less changes, precompilation stays at install time. |
Yeah, of course, if you precompile the world once you don't have to precompile it later.
Well, it is not a straight-up regression, it is a trade-off. It is a big win in the cases where you do To be honest, with load time precompilation I probably don't see much personal value in the |
I think we might have opposite opinions on this. Might be worth fielding opinions on slack? |
A fancy solution would be to be specific like this PR, but spawn off the rest of the Project work as a background thing afterwards. The UI of that needs figuring out, but it might not be too tricky..
Pidfile locking should protect against races and we already report if the current process is holding the lock in an async task. |
Right now, there is no way to turn off full precompilation of env on |
I must say this is sooo annoying.
Argh!! All the time. And then I have to cancel it:
and it is pages of errors. |
IMO it's an issue for people that work on master. We could turn it off for non tagged builds? |
If |
Why does everything else need re-precompiling? Because you're changing julia version a lot, no? |
Otherwise it's handled at install time for those packages. |
And IMO we should #3905 to help everyone avoid re-precompilation they don't really need |
Perhaps this could be merged behind a switch? One reason I don't like it is that it dislocates cause and effect for precompilation activity. Like, add a package, updates a dep that is shared by another top level package. With this change the user will hit precompilation at a later stage and not know why, whereas currently they can see that a dep changed. For normal non package dev users, it reverts to the olden days of Pkg not really fully finishing the installation. |
What about we do this but also add something that detects if you're using a new julia version compared to the manifest (wouldn't happen for nightly because we don't record the DEV number) and asks if you'd like to precompile the entire env? A prompt with a shortish timeout would be best. |
How about this:
|
I see your suggestion and raise you:
|
Many times in the global env I add some small package to try it out and then Pkg starts precompiling everything (even things I did not intend to load). This means I often have to interrupt it (which is a bit brittle) and it feels like it is doing something I didn't ask it to do.
With this, it will only compile the deps graph of the added packages. If a user want to load some other package later, the load precompile step will pick that up.