Improved Installations from Executables

Most users are probably installing Julia from the executables instead of building from source. Given that, is it possible for the executables to be a little smarter? For example, what about having them re-build the system image (or have an option to do so in the installation process), or if the usrimg.jl is used for a standard library / default packages to compile with the image (as seen here:

https://github.com/JuliaLang/julia/issues/18795#issuecomment-267686103

), what about having part of the install let a user choose some packages to do this with?

I think these kinds of improvements would go a long way to helping make sure Julia is tuned to the computers its installed on. I would also like to see executables which include a Juno installation come back (I remember that used to exist with JunoLT?), but that’s another issue.

If you are referring to .ji files, those aren’t machine code, so they are re-JIT’d anyway. Rebuilding sys.so/.dll requires a linker, which cannot be assumed to be available on Windows.

I also suspect the benefits would be small for most base code, maybe too small to justify adding several minutes to the install process. But :thumbsup: to streamlining the process for people who do have a linker.

Somewhat related: https://github.com/JuliaLang/julia/issues/16409

Hmm so we already include LLVM and Cxx.jl will also build Clang. If we want to support e.g. static compilation on Windows out of the box so users can make .exe files (and similarly on other OS’s) would it make sense to either include the LLVM project’s linker (LLD) or have a core package bundle it or something?

1 Like