static-julia icon indicating copy to clipboard operation
static-julia copied to clipboard

Project status and goals

Open MatthiasKauer opened this issue 7 years ago • 6 comments

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

MatthiasKauer avatar Oct 15 '17 23:10 MatthiasKauer

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?

MatthiasKauer avatar Oct 16 '17 00:10 MatthiasKauer

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.

MatthiasKauer avatar Oct 16 '17 01:10 MatthiasKauer

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.

ViralBShah avatar Oct 16 '17 03:10 ViralBShah

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?

MatthiasKauer avatar Oct 16 '17 04:10 MatthiasKauer

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.

ViralBShah avatar Oct 16 '17 13:10 ViralBShah

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?

MatthiasKauer avatar Oct 16 '17 22:10 MatthiasKauer