With the doppio demo linked, I get a REPL in about 2 minutes on chromium and under 5 on firefox. That's a huge improvement since I last tried.
Performance is not great though; I ran the gabriel "boyer" test and it was 0.288 second on openjdk 1.8 and 63 seconds on Doppio in chromium.
I recently added support for ClojureScript
An Intro: https://epiphany.pub/@shi-yan/introduction
b) Clojure didn't really fully succeed, there were annoying differences between Clojure and Clojurescript last time I looked. There are compilers for incomplete subsets of CL to JS as well, although presumably much worse ones.
c) There's some stuff in Common Lisp that's quite hard to do efficiently on top of most existing language runtimes. For example resumable exceptions and lua/CL-style optional multiple return values. In assembler or without concern for efficiency the last one is trivial, otherwise, not so much.
d) Clojurescript could bootstrap existing fancy JVM platform stuff (closure compiler) to do quite a lot of heavy lifting.
I think a modern multiparadigm Lisp on LLVM would be great. Perhaps that's Julia, though.
D) Anything targeting JS can run the output through closure; I've done so with Parenscript, for example.
D) Of course, but if you require some additional JVM based tooling for a JVM language like clojure, you lose 0% of your potential audience and introduce no additional friction, which is not at all the case for CL (nor would it be for, say C++ or Lua).
Oh look, a comment in this submission Github's item points to JSCL, for example.
There are several CL implementations with deep C integration, for example by compilation to C. CLASP has deep C++ and LLVM integration. Some implementation can create shared libraries which are being loaded from other programs.
I tried to run some of my CL stuff in JSCL, but the browser just froze, so I quickly gave up on that. Guess it can't handle more complex stuff.
I wonder if someone ever tried to compile a C-based CL implementation (like sbcl) to WebAssembly (i.e. using emscripten) ? I'd be surprised if nobody ever tried that,
but I never read any reports regarding success or failure.
Does anyone know about prior works I could potentially contribute to?
Or someone could semi-manually create links for all the snippets?
object models differ widely. Compare Smalltalk, Java and C++.
CLOS had influence on a bunch not so mainstream languages: Perl5 (Moose), Perl6, Julia, R, Scheme (TinyCLOS and similar) ... and a bunch of extensions to C, Java and other languages.
There are some difficulties to make CLOS fast on top of, say, the JVM. One can't map the full CLOS directly on top of Java objects, since they lack some features like multiple inheritance, direct class updates, etc. So there is a layer of mapping necessary - which is possible -> ABCL. But it's not as fast as a direct implementation.
> A lot of the complexity comes from needing to be both interpreted and compiled at the same time
Not sure what you mean by 'interpreted', but there is no requirement to support both. SBCL for example and no Lisp interpreter for many years. It now has one, but it's not used much. Clozure CL also has no interpreter.
Btw., EVAL is no interface to an interpreter. SBCL would compile the code at runtime.
> A lot of completely arbitrary things like the infamous LOOP macro are in the standard library.
It's not arbitrary. It's a standardized iteration facility. LOOP actually does not make implementations difficult, since there are ready-made LOOP implementations which can be just loaded into Common Lisp.