I usually have pyInstaller in hand to help me out with the distribution of my Python projects. It also allows me some sort of protection with my commercial Python scripts (my company keeps the source code private from our customers).
Is there any plan to have a stand alone binary executable (AOT compiling) for Julia?
This is going to become an issue for us as well.
Previously, our model was that all of our code (the core code with the really important stuff that the founder doesn’t want ripped off is written in Julia) was only going to be at our own data centers, but now a big company wants to to use their equipment / data centers, so he have to think about how we can the code.
We’d probably be fine if we could just ship with the .ji precompiled code for most of the modules, if that would work without the source available.
I am not sure why this keeps being said, especially given the other dynamic language (R/Python/MATLAB) don’t do AOT compilation at all. Instead they just build executables which bundle a script with the interpreter. Sounds like you’re really just asking for this instead:
I think there’s a business opportunity here. If someone would make a closed-source fork of Julia that could run encrypted source files, then he could probably make a bit of money from every company that wanted to distribute closed-source software or libraries written in Julia.
The situation would be similar to that of .p files in Matlab. In theory, if you spent enough time, you could probably reverse-engineer it. (The key must be in there somewhere, otherwise the code wouldn’t run.) But in practice it’s not worth the effort for most people.
I think the solution should be composed of 2 steps:
Allow something like MATLAB’s p File. Maybe it should be only on JuliaPro or something like that. Probably even someone could create a package to allow similar functionality with user own key or something like that.
Something like MATLAB Compiler to allow creation of a full independent application (Executable).
Update
The reason I wrote it might be only by Julia Pro isn’t in order to put it behind paywall.
The idea was that someone needs to embed the key in the engine and not tell the rest of the world and they are the one who distribute binaries.
If there’s a way to do it otherwise (Each one creates its own key yet the code can somehow be shared) it would have been even better.
I just want to point out how depressing it is that we live in a world where obfuscating code is such a high priority for so many people. (No offense to those people, I might be in that position some day too, at which time I’ll repeat this comment.)
While I kind of like that idea, I suspect economic reality makes this impossible. One can already create free Python stand-alone binaries, and it is hard enough to convince people to switch from Python without a pay-wall.
Bundling of Julia and source files for ease of distribution purposes should be free. Obfuscation of Julia code is only really valuable to commercial entities, who should be willing to pay.
I disagree completely. Open and free static compilation capability would benefit the overall Julia and scientific ecosystem in three major ways: Major competitive advantage over python and will allow Julia to compete with Go, Rust and newer compiled languages for dev ops, web assembly apps, increasing adoption and helping scientific devs with better general purpose compute tools.
Two, static compilation with WASM output so researchers and other people can tweak and mess around with model parameters without having to install Julia.
Three, Compiling shared libs for use from other frameworks. I’d like to use Julia to build free software that matlab and python users can call, but right now this is cumbersome or impossible.
Yes, yes. Everybody wants this feature. It is already possible with some fuss. In the future it will be better, more convenient, more standalone, leaner – all of the things that everyone wants. The general desire for this feature has been duly noted: static compilation to standalone binaries is something people want . It will get done. If someone wants to start working on it and contribute to that effort, great, then it will happen sooner! Further discussion of the subject that’s not accompanied by working code is unhelpful.