4 ms·
This is only telling half the story. It is perfectly true for, say, Python (still a pain to deploy on Windows, or at least it was the last time I tried), but ne
by Blackthorn 12y ago
This is only telling half the story. It is perfectly true for, say, Python (still a pain to deploy on Windows, or at least it was the last time I tried), but newer languages that are less popular like Go do not have this problem. Even Rust, a language that is only in alpha, does not have this problem!
Why is this? It's because they can live in, and interact with, the common linking and loading ecosystem that the rest of the world lives in: the C ABI. If you can link your output into something that respects the C ABI, you can deploy it[1].
Common Lisp implementations could immediately solve their deployment problem by living in this ABI. So far, the only one that has done so is ECL (which is an excellent project).
[1] A few alternatives exist. The Java and .NET ecosystems are also viable link targets (as I think Clojure has proved).
- ScottBurson 12y agoWell, sure, if all your programs need is the OS and common libraries, deployment is easy. But this only restates the point. It's easy because those things are popular. Try deploying an executable that requires a shared library that you can't download with your package manager, and you're pretty much back into the same pain. Using the C ABI helps if you want to link against other code that uses it, though it isn't strictly necessary (pretty much all these language implementations have foreign call mechanisms). But this is a development issue, not a deployment issue. ECL does make it convenient to build standalone executables, but most CL implementations can also do this.
- lispm 12y agoIf you want to create something that you can link into C program, there are several options: Lisp systems like LispWorks can generate typical platform shared libraries. Many can easy embed C-code. Some compile to C, which than can be embedded. ECL is only one example. Others are mocl or the ECL-related systems.