Wow — I did a similar analysis, focusing on (free) Lisp implementations’ startup times and memory usage, after discovering the straight Clojure would consume so much VM on my little VPC, running just a small demo program, that the machine wouldn’t continue to serve sufficient IMAP and SMTP connections to keep my email server running.
I have notes somewhere (posted some perf analysis on my consulting site, http://burleyarch.com, awhile back, but not all this stuff I did) comparing Emacs Lisp, Scheme, Guile, GCL, Clojure, and so on. Wanting to use a Clojure dialect, that led me to ClojureC. Explored that, found and fixed a bug or two, liked what I saw, but in talking with the author about its future (it was really behind the Clojure-version curve), he suggested I look into ClojureScript in combination with the Google v8 engine.
That seemed a little better, but in the meantime I was also checking out languages to implement a fast Clojure interpreter in, and discovered Go was only about 2x slower starting up a “Hello World” program than C. (Bash does surprisingly well, FWIW, so shells are not, in and of themselves, slow beasts.)
I was actually considering implementing a Clojure variant in Go, when it occurred to me to search for one — and found Joker! Wish I had more time to work on it, but I’ve been running it for one-shot, lowish-latency-needed scripts on my email server for many months now (maybe a year).
My current thinking is that its startup time could be substantially improved, but I want to investigate this only after I finish automating wrapping the Go STD for use by joker scripts, since that’s my main blocker for further adoption — after which improving the startup time would probably be at or near the top of the list.
Thanks for the comments, really nice to see what people are trying to explore. A compiler is a lot of work...I am thinking about it more and more in this period but then the whole "I can I make it sustainable" problem comes up
FWIW, I think Planck might still be slower but plk
is a wrapper script that runs Clojure to support deps.edn
: https://github.com/planck-repl/planck/blob/master/README.md
Ya, I tried with planck directly as well, and it was the same timings