-
-
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 out SparseArrays and SuiteSparse from the sysimage #44247
Conversation
@nanosoldier |
Those times look quite ok. And probably can receive a bit of love on improving compile time once we move out of sysimage. Does it improve Julia startup time slightly? |
Your package evaluation job has completed - possible new issues were detected. A full report can be found here. |
A common failure mode seems to be |
Ugh, this further shows that SparseArrays and SuiteSparse should not have been separated into different packages. SuiteSparse does type piracy between |
The reason we split them was so that they could be moved out one at a time - and possibly across releases. I am ok with folding back SuiteSparse.jl into SparseArrays.jl, now that they are all out into separate repos, and would be happier if we can move them out of stdlibs altogether. |
Can we do this early in the 1.9 release? I suggest moving them out of stdlibs altogether. Perhaps worthy of a triage discussion? |
The earlier we move it out, the longer we have to test it in the wild before the 1.9 release. I also think we need to advertise this change broadly across multiple fora, including (but not limited to) Discourse, Slack, and Zulip. And again, the sooner we make the announcement, the more time people have to fix their code. |
Well, the fact that SuiteSparse does type piracy makes moving them out difficult. I guess we could start with Statistics. |
Why is the type piracy a problem? Can't we just merge suitesparse into the sparsearrays package if that is a concern? |
From triage: ok to merge SuiteSparse into SparseArrays (or make SparseArrays depend on SuiteSparse?). Move 'em out! 😄 |
If making SparseArrays depend on SuiteSparse solves it, that would be the preferred solution. @KristofferC I'm always not sure about these stdlib things - is this something you can do or suggest what needs doing if it is out of the ordinary? cc @Wimmerer |
What remains to be done here? To solve dependency between SuiteSparse and SparseArrays? The obvious way to me is SuiteSparse depending on SA, even if that's not ideal for other sparse packages. E: This is already the case, the issue is |
What we need to do is to ensure that SuiteSparse.jl is always installed when SparseArrays.jl is and ensure that this PR passes. This dependency can be removed in the future, but since it is a part of Julia 1.0, we have no choice but to enforce that dependency if we want to move things out of stdlib. |
@KristofferC Is the simplest solution here to make SparseArrays.jl depend upon SuiteSparse.jl - to ensure that both are always installed together? |
For Statistics, we do want to get it out of the system image and off in to its own package, but it will be odd for |
Well actually, while I'm not sure I really like the trend of moving everything out of base and stdlibs all the time, this actually might be a silver lining. My main "elegance" gripe re the last time things got spun out (1.0) was that the statistics functionality kinda got fractured, with some things in Statistics and some things in StatsBase. So if the overall trend is going to continue (and we can't put StatsBase back into Statistics) then maybe the better option actually is to rip off the bandaid, move everything out including |
@brenhinkeller This is essentially what we'd like to do. AFAIK the only remaining debate is whether |
The last time we tried to move |
Having the basic version in Base and weighted versions in Statistics would certainly be possible (currently they are split between Statistics and StatsBase). It would be a bit more tricky if we want to use a keyword argument (though possible using dispatch under the hood). But I would have hoped this change would be the occasion simplifying the organization of stats functions. Also Anyway yes, asking for feedback on Discourse is a good idea. |
Continuing discussion in JuliaSparse/SparseArrays.jl#147 |
The SparseArrays and SuiteSparse bumps are in (SS is now incorporated in SA and is an empty package). |
Are these failures related to us? That error message doesn't seem related to me. |
Don't seem related, but what is the actual error? I'm missing it - I thought it is getting stuck in the building system image phase and timing out on 32-bit win and linux. |
Well I can't actually tell either, the linux32 one was failing a minute ago I thought (that seemed like a codegen error or something). For win32 I don't actually see any errors other than |
I restarted the linux32 buildbot. |
At line 1232 in https://build.julialang.org/#/builders/29/builds/7561/steps/7/logs/stdio:
|
I see a timeout this time. Will splitting the tests into individual files help with that? Or was that just for memory purposes. It's failing on win64 this time rather than win32 like last time... |
But this one is actually in running the tests rather than system image building. In fact the sparse tests have all completed. I doubt there are memory issues on 64-bit. |
Rerunning the win64 tester. |
Let's see how this goes. |
Would maybe have been good to run PkgEval again. |
I thought "What could possibly go wrong" since we had already run it earlier. I am sure famous last words. |
Since SuiteSparse (which is GPL) is moved out, it means the sysimage is now non-GPL, i.e. MIT only? And thus "Julia"? It's still a stdlib I believe, for now, and I'm not sure it changes the question if Julia should now be classified as non-GPL. I believe the plan is it will not even be a stdlib, like DelimitedFiles isn't by now. This is a reminder to update GPL status, if I'm actually right, and not too soon, if it was forgotten. |
AFAICT SuiteSparse was the only GPL library we link to (see julia.spdx.json), though gmp and mpfr are still LGPL, so the compiled Julia will be LGPL once we move SuiteSparse out of the stdlib. |
It looks like moving out SparseArrays from sysimage significantly increases the package loading time because many small root dependencies use
I kindly request some efforts into JuliaLang/Pkg.jl#1285 so that people don't need to break packages into smaller pieces (say, |
That is a gigantic slowdown... I had planned to work on conditional deps /glue deps at some point but became sidetracked. After the 11th I can work towards that again, but that's a pretty large feature at this stage of 1.9 I think. |
Maybe precompile statements for these packages once they become regular packages will greatly help? |
This is loading time so that won't help. |
…age (JuliaLang#44247) Co-authored-by: Viral B. Shah <[email protected]>
cc @ViralBShah