-
-
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
[RFC] Treat stdlib packages more like normal packages #25248
Conversation
Oh it also makes revise work again for |
As a data point, Pkg3 crucially needs to be baked into sysimg with precompile statements for acceptable performance. Especially since it needs to be loaded in all new precompilation processes. |
Interesting right now loadtime for
You mean since it needs to be loaded into all processes so that We have basically 3 options as far as I can tell:
In my opinion:
Load times on the PR:
|
FWIW, Why does Distributed take so much time to load? That sounds like the main problem to me, especially if starting workers requires loading the package. |
Looking at the profile for |
If only
That, and it is likely that different Pkg environments will use different precompilation paths to avoid having to recompile everything just because of swapping environment. |
I realized this week that in Pkg3, .ji files generally don't need to look at the sources of files they were loaded from since those are supposed to be immutable. They do, however, need to look at the manifest file they were loaded from. |
In case of |
I just want to say that this looks really like the (only?) correct way forward to allow stdlib packages to live outside the Base release cycle. My point with the earlier comments is that perhaps Pkg3 is a bit special because it is interactive, so snappiness is important, and the hooks it need into Base are quite intensive. |
But if standard packages should live under a different release cycle, it would be necessary that the move out of JuliaLang/julia. Otherwise they cannot use the versioning implemented in Pkg2/Pkg3. IMHO this would be the desired move. But in addition it would be important to have super easy system image compilation. Maybe we could have a second system image and the user can configure which packages should be in there. The default is all stdlib packages. |
This PR has the goal to allow Pkg3 to eventually manage and update stdlib packages.
In order to achieve that goal we can no longer bake the stdlib packages into the sysimage
so I had to revert #24843. The major downside to this is that it increases the load time of
stdlib packages since they are now cached as normal packages. The major upside is that stdlib
packages are now treated as normal packages and the sysimage is faster to build.
I would like to solict comments on the
Makefile
andcontrib/stdlib_cache.jl
.(I had to add an option to tell Pkg2 to not resolve packages in order to achieve reproducible builds)
This is part of my exploration for how to get Pkg3 into Base.