Comment by BaculumMeumEst

3 years ago

Strongly disagree. SBCL is not embeddable. It produces huge binaries. Managing and versioning dependencies is very difficult.

Newer dialects like Janet and Fennel address these deficiencies.

> It produces huge binaries.

My binary with dozens of dependencies (the compiler, the debugger, a web server and all that's required for a web app) is ±30MB, it starts up in 0.40s. The non-compressed binary weighs 120MB and starts in 0.02s.

> Managing and versioning dependencies is very difficult.

You can use Qlot and CLPM these days.

Alexander of 40ants made a demo: https://www.youtube.com/watch?v=jLkqYVTqM38 (with english subs)

Thankfully SBCL is just an implementation and not the language ;)

There are alternative implementations, like ECL, which is capable of transpiling to C and producing small binaries and dylibs. Then there are implementations like CCL, which have low memory footprint (a freshly booted image consumes ~6.8 MB RAM on my Mac). Lastly, there are commercial implementations like LispWorks and Allegro CL which offer tree-shaking, unlike all other implementations.

That's why Common Lisp is a standard and has different implementations.

ECL for example is called "Embeddable Common Lisp". https://ecl.common-lisp.dev/

ABCL is embeddable into Java.

LispWorks and Allegro CL can compile to shared libraries, which are embeddable.

SBCL, OTOH was not developed with the goal to be embeddable.