4 ms·
> I liked the idea of distributing binary applications as well, which we needed to do in some instances, and building a binary runtime of the software was a gr
by zeIMOr5vRXhVpO 5y ago
> I liked the idea of distributing binary applications as well, which we needed to do in some instances, and building a binary runtime of the software was a great draw, too.
fwiw this is possible to with clojure using graalvm. Only mentioning this because of the clojure comparison in the earlier paragraph. While I do lament the JVM I haven't found a straightforward way to build statically compiled binaries with sbcl. I would love to be proven wrong though! :D
- mark_l_watson 5y agoGive SBCL another try for building compiled applications. If you compile SBCL from source, enable compression of standalone compiled apps. I own a license for LispWorks Pro, which does a very good job building applications, but SBCL is also good for delivering apps.
- brabel 5y agoDoesn't `(save-lisp-and-die :executable t)` [1] create static binaries? I had a look at one of my SBCL-made binaries on MacOS, it shows this: ▶ otool -L lisp-enc lisp-enc: /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1292.100.5) /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.11) EDIT: GraalVM takes several minutes to generate binaries, and the binary may not behave the same as the JVM-based runtime, so I wouldn't recommend using that. [1] http://www.sbcl.org/manual/#Function-sb_002dext-save_002dlisp_002dand_002ddie http://www.sbcl.org/manual/#Function-sb_002dext-save_002dlis...
- svetlyak40wt 5y agoYeah, you've got a dynamically linked binary. There is a work in progress on SBCL to make it possible to create a really static binaries: https://www.timmons.dev/posts/static-executables-with-sbcl-v2.html https://www.timmons.dev/posts/static-executables-with-sbcl-v... I tried this fork and it worked for me!
- p_l 5y agoWell, the example was on OSX, and it's generally not a good idea to do static linking there ;) (same on many other systems, you need minimally certain amount of dynamically linked stuff). Blaze/Bazel rules for Lisp support building fully static SBCL binaries (except possibly for grabbing dynamic stuff that is forced by glibc). ECL also supports static linking.
- vindarel 5y agoYou have this way: https://lispcookbook.github.io/cl-cookbook/scripting.html#with-asdf https://lispcookbook.github.io/cl-cookbook/scripting.html#wi... and truly static executables are coming: https://www.timmons.dev/posts/static-executables-with-sbcl-v2.html https://www.timmons.dev/posts/static-executables-with-sbcl-v...