Skip to content
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

Plots precompilation broken on future 1.10 #51117

Closed
t-bltg opened this issue Aug 30, 2023 · 5 comments
Closed

Plots precompilation broken on future 1.10 #51117

t-bltg opened this issue Aug 30, 2023 · 5 comments
Labels
compiler:precompilation Precompilation of modules

Comments

@t-bltg
Copy link
Contributor

t-bltg commented Aug 30, 2023

Example of failing CI on 1.10-beta2.

CI passes on 1.6 -> 1.9.

Looks like #50541 ?

cc @BeastyBlacksmith.

@vtjnash
Copy link
Sponsor Member

vtjnash commented Aug 30, 2023

Looks like several package bugs similar to this


Failed to precompile InspectDR [d0351b0e-4b05-5898-87b3-e2a8edfddd1d] to "/home/runner/.julia/compiled/v1.10/InspectDR/jl_zzmLrF".
ERROR: LoadError: Creating a new global in closed module `__toplevel__` (`_devmode`) breaks incremental compilation because the side effects will not be permanent.
Stacktrace:
 [1] top-level scope
   @ ~/.julia/packages/InspectDR/cYUMk/src/InspectDR.jl:8

@BeastyBlacksmith
Copy link

BeastyBlacksmith commented Aug 31, 2023

As far as I understand it is only broken if you change the default backend, since then it is trying to load a package into Main at precompile time that is not a direct dependency of Plots

@BioTurboNick
Copy link
Contributor

So, evaluating into Main during backend initialization has been something Plots has been doing for 6 years, and selecting a default initial backend during precompilation has been around for 1 year (JuliaPlots/Plots.jl#4566), but Julia 1.10 has broken it.

@vtjnash vtjnash closed this as not planned Won't fix, can't repro, duplicate, stale Jan 10, 2024
@vtjnash
Copy link
Sponsor Member

vtjnash commented Jan 10, 2024

Sounds like it is implemented wrong for the current loading system. When first written, there probably wasn't PkgId yet and such. But eventually needed to be fixed to reference dependencies correctly in their manifest

@StefanKarpinski
Copy link
Sponsor Member

I understand that this is annoying, but I don't think we can reasonably guarantee that packages can do arbitrary eval shenanigans during precompilation and have it never break. Evaling into Main is a super sketchy thing to do and the fact that it ever worked during precompilation is quite dicey.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
compiler:precompilation Precompilation of modules
Projects
None yet
Development

No branches or pull requests

6 participants