By default, ECL seems to link with a libecl (or something like that) shared object. If I compile with “--disable-shared”, it seems to also remove the “compile to native” part. Or at least that’s how it appeared to me.
It’s possible I’m misunderstanding, but it I didn’t see why those two aspects (static binary and native/non-byte code) are coupled. Again, apologies if I’m just misinterpreting!
Edit: my motivation is I have some small utilities that I’d like to be able to just copy to any Linux box (even musl libc-based Alpine) and have them work, regardless of glibc/ECL being present.
Even when you compile with "--disable-shared" you'll link against libc (but everything else will be statically linked). The function "--disable-shared" does not remove the compiler to native, it removes compilation of fasls to native. The reason for that is this:
- "native" fasls are shared objects under disguise linked against libecl (dlopen)
- they can't not link against libecl unless you want to statically link whole ecl with the fasl
Imagine that you call a PRINT function from the FASL. The symbol you will probably reference is ecl_print that is defined in ECL core runtime (usually in libecl.so, libecl.a/static-ecl).
The native compiler still can produce statically linked native binaries.
Now I'll get into current ECL developments - mind that this is not granted that this pan out as expected - perhaps I'll scrap whole work at some point:
I'm refactoring ECL compiler to have multiple frontends and backends (something like LLVM) - currently passes are far more coupled. With that I hope to have a better control over a generated code and we could use static analysis about which parts of CL are used, and in an opt-in manner we could allow minimal static builds that do not depend on full CL. Such static binaries could be really small.
As for the FASL compilation part, it sounds like I did indeed misunderstand the documentation, but I’ll need to digest your comment a bit more :)
Thanks!
If you manage to link musl libc statically then I'd greatly appreciate if you share your experience on our issue tracker or on irc (#ecl @ libera.chat), and if you have problems with it, you may ask in either for advice.
EDIT: other people and companies had LispWorks apps accepted by the Apple Store
If I recall correctly Paul has a few applications in the Apple Store, but you'd need to ask him directly to confirm that.
What is the main difference between ECL and GCL?
[1] One of current GCL goals is to reach it