System Images, source code and implementation protection and portability (environment distribution)

Hi all!

As far as I understoodd system images, the main idea behind this mechanism is, to reduce Julia startup times by removing the need to spend compile time at startup.

Has anybody an idea, how to solve the following two topics in this context:

  1. When co-working with other organizations, there is often the need to share functionalities, but most time nobody wants to share the full source code. One idea would be to compile the source code (with Package Compiler) and just distribute a custom system image. This seems to be the only way to hide the source code, right?

  2. Creating the system image and running it on the same machine seems to be possible. One caviat: obviously the system image references stuff of the julia implementation by absolute paths. So one is not able to copy the package somewhere at the harddisk, but it’s needed to use the same directory structure used for building the system image.
    Further more, we wanted to distribute the package on multiple machines. Even though the machines are in principle HW and SW identical, it is not possible in any case.
    E.g. building on Ubuntu running even on a slightly different version of Ubuntu works perfectly.
    But buildung on OpenSuSE Leap 42.3 and running on an identical other machine also with OpenSuSE Leap 42.3 did not work. Starting Julia with -j “…/something.so” did produce “ERROR: Unable to find compatible target in system image.”
    It looks like, the target selection mechanism does not work reliable on all machines. Even referencing the target “generic” during building the system image and calling again later on with identical target, does often not work as expected.
    Are there any additional informations about target selection and dependencies on hardware and/or OS environment?

  3. Currently I did try porting a Julia 1.3.0 installation (Generic Linux Binaries for x86 64bit) including the system image as tarball. Docker would be also an option, but I would not expect to make any difference to the above discribed problem.

Any guidance to solve these issues would be really appreciated.

Thanks a lot in advance for any response,

Mike

1 Like