static-julia
static-julia copied to clipboard
Project status and goals
Hi, I am very excited about what I think you are trying to achieve with this project. However, I am not sure if my impression is correct and I have trouble evaluating the maturity of this project. Could you say a few words on the following questions?
- Does static-julia mainly aim to provide speed by compiling ahead of time or is this more about the distribution of libraries and executables?
- How portable is a library or executable created with this project? Does it still depend on libjulia?
- Can I build a Python wheel library that doesn't require Julia to be installed on the user's computer with this project?
- Is this an independent project or is it part of the effort for Julia 1.0? Are you "almost done" or "just starting out"?
Best regards, Matthias
Ok, it seems like I have answered some of my questions:
o AG82w matt@hp840:~/dvl/static-julia (master)$ ldd builddir/hello
linux-vdso.so.1 => (0x00007ffebb7cd000)
libhello.so => /home/matt/dvl/static-julia/builddir/libhello.so (0x00007f2663a05000)
libjulia.so.0.6 => /opt/julia-903644385b/lib/libjulia.so.0.6 (0x00007f2663307000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f2662f20000)
libLLVM-3.9.so => /opt/julia-903644385b/lib/julia/libLLVM-3.9.so (0x00007f266111a000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f2660f15000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f2660d0d000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f2660af0000)
libstdc++.so.6 => /opt/julia-903644385b/lib/julia/libstdc++.so.6 (0x00007f266076f000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f2660466000)
libgcc_s.so.1 => /opt/julia-903644385b/lib/julia/libgcc_s.so.1 (0x00007f266024e000)
/lib64/ld-linux-x86-64.so.2 (0x0000555dbfa53000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f2660033000)
So libjulia is still required right now.
Is it reasonable to attempt static linking or putting the shared libjulia file into the same directory for easier distribution?
Your forum post https://discourse.julialang.org/t/compiling-and-building-binaries-from-your-julia-code/5687 I stumbled upon also clears up many things.
The eventual goal is to be able to build standalone libraries and executables, and ship as part of a python wheel without needing Julia, or distributing a Julia package without source.
For now, it will live here, and we'll try to make sure it works well. I do hope that as julia gets better at this sort of thing, these capabilities should move into the julia codebase - but that is certainly post 1.0.
Thank you for getting back to me. I will be watching this project :) Is this project currently waiting for features from 1.0? Could we get standalone libs on 0.6 already? We'd need to build a static libjulia from the main repo first, right?
Currently, this will give you executables or shared libraries that depend on the libjulia.so
and any other libraries such as BLAS/other dependencies, or any BinDeps dependencies your code may be using.
Ok. In other words, if we want static executables, there are a lot of build scripts to be adjusted to offer static libraries. In fact, the whole Julia ecosystem would have to offer a static library, right?