I used to make standalone apps from SBCL Common Lisp, and they were not too large (even though SBCL has no tree shaker unused code remover).
I used to make standalone apps from SBCL Common Lisp, and they were not too large (even though SBCL has no tree shaker unused code remover).
I did a benchmark of executable image sizes and startup times for the popular open-source implementations[1] it depends on cl-launch since asdf:program-op was still experimental at the time.
A few points I discovered:
SBCL and CCL are neck-on-neck for startup time; very slightly longer than a hello-world in python, but much faster than any python script that has to do any significant importing.
SBCL has by far the largest image size overhead ~80MB for "hello world". It has an option to compress the image with zlib, but that is a big impact on image startup time. I did a proof of concept of an lz4hc image compressor, and it made for acceptable startup times while taking the overhead down to under 30MB. Someone else turned this into a real patch, and it is waiting to be merged.
CCL's image size is about 1/2 that of sbcl.
ECL has, by far, the smallest image size, even including the DLL (3.2MB for a lisp runtime is tiny!). However, it has a startup time that is two orders of magnitude higher than sbcl/ccl
clisp was ind the middle of things; executable image was about double that of ecl, it's startup performance is better.
Rob
We've had a string of really cool lisp projects this year, web frameworks, implementations, web servers, libraries, etc. Couple that with Edi Weitz's upcoming book, it's as exiting to be a lisper now as ever. Hack gloriously and eat your parenthesis for breakfast my lispy friends :)
Mark's book can be found used for $3.00 on Amazon.
Edi's upcoming book on Amazon is listed as $56, due December 2015. I will probably buy a copy when it ships.
EDIT: I just pre ordered a copy on Amazon to lock in that price.
Barring that, most GUI executables are fairly insensitive to startup time, so SBCL core compression would the lisp image down by a factor of 4:1.
Lastly, you can always just not worry about it:
du -s /Applications/*.app | sh ~/avg.sh
Total: 28529040; Count: 126; Mean: 226420; Median: 56752; Min: 8; Max: 6132408
1: Note that SBCL generates the best code of any Free lisp implementation, and makes it the easiest to tune your code for better performance. As disk space is cheap, it's what I use for most of my applications.https://www.reddit.com/r/Common_Lisp/comments/3d3oqh/ceramic...
The gist is: for the Javascript parts on your site, any plans to integrate Parenscript for the full Lisp experience?
Thanks for your work. I saw again it was posted before today on /r/lisp and /r/programming, but I missed it.
The only JavaScript is in the Electron process, and it's fixed, ie you don't have to touch it. You interact with it through CLOS methods on window objects.
Other than that any JavaScript is optional, you write it yourself (using whatever source language, e.g. ParenScript) and ship it with your app as a resource.