-
-
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
Move startup code to new Client.jl stdlib #51350
Conversation
Does this really have to be a real standard library that you can add and get in your Manifest files, autocomplete with the package manager etc? It feels this should be implemented in a way that makes it just an implementation detail that is completely opaque to e.g. the package manager. |
Once the mythical |
So we need to make package loading just another 10x faster xD Interesting data-point after looking at the load with Tracy. We are also currently eagerly loading Pkg and we need #51189 first. Here I am using Client.jl to contain the precompile statements for Pkg, REPL, InteractiveUtils. |
What is the REPL invalidating? |
I haven't checked :) This was me just getting distracted from my actual work and trying to see how far I can get. |
I am not sure it's worth moving this code out. Certainly a good lesson in how we eventually want to handle REPL precompilation. The original allure was that we could remove from Base the special knowledge about packages like REPL, Distributed, but really just replaced it with a special package called Client xD. Loading the Client lib on my sysimage (after the dependency inversion) is about 14.5ms extra. |
So yeah we lose 15ms for little gain. |
I think there is value in moving the code even if it is all still in the default sysimg. It's cleaner design and should also reduce the minimum size image you can generate with PackageCompiler and filter_stdlibs. If we dig we can probably find more code that can move to Client.jl. |
I think I've recently become more interested in this PR after the triage decision that If |
Agreed to that would be nice. I am currently not pursuing this PR since the latency implications were a bit on the high side.aybe we can reevaluate this again, but for now I want to finish moving out the rest of the stdlibs first |
Based on a brief discussion during triage with Jeff.
The idea is that we could move most of the "Client" things into it's
own seperated stdlib in preperation for it to become a standalone library
this would allow us to move InteractiveUtils, REPL, and Pkg out of the sysimg
immediatly.
There is still a few kinks with generating the precompile statements for Client.