The OpenLDK is very interesting - it looks like it “compiles” to the vintage procedural dialect within CL (eg TAGBODY etc.) I wonder if someone’s ever bypassed the “procedural Lisp” level and just used a CL implementation’s internal assembler interactively, though. (IIRC both SBCL and CCL expose theirs.)
I did that to write simd routines for sbcl: https://github.com/sbcl/sbcl/blob/master/src/code/arm64-simd...
Probably the best way of writing assembly, can evaluate the function immediately, use macros and any other code to emit instructions, even can print register values (instruction-level stepping would be even better, but too much work).
TAGBODY/GO are broadly used in advanced Lisp macros. If you expand a non-trivial extended LOOP invocation you'd likely see some.
If you compile to an implemenation's assembler (even where that possible) you don't really compile into Lisp anymore. And really the Lisp compiler is going to do a better job at generating machine code.
The Computer Abstractions book/course for Scheme had some kind of VM written in Java where you had to write an assembler in Scheme as the final 'biggie' project.
If you are interested in this, you might also be interested to learn that I also got clojure running on SBCL via OpenLDK. See https://github.com/atgreen/cl-clojure.
Regarding LLM-usage, the bulk of OpenLDK was written without the use of LLMs. But recently I let Claude loose on the code to fix a few remaining problems blocking kawa. Claude also upleveled the Java support from Java 8 to Java 21.
What a blast from the past! I too remember with pleasure the days working with Anthony Green (and others) at Cygnus. I like to boast that (apart from Java) Kawa Scheme is the oldest compiler-based language implementation still available for the JVM.
Well, GNU Kawa is named after the Polish word for coffee (going with a play on Java rather than a play on Scheme like Guile and Larceny EDIT: and Gambit went with).
mark_l_watson|4 days ago
I am a fan.
shawn_w|4 days ago
nxobject|4 days ago
stassats|4 days ago
varjag|4 days ago
If you compile to an implemenation's assembler (even where that possible) you don't really compile into Lisp anymore. And really the Lisp compiler is going to do a better job at generating machine code.
zombot|4 days ago
brazzy|4 days ago
pjmlp|4 days ago
"We were after the C++ programmers. We managed to drag a lot of them about halfway to Lisp." -- Guy Steele
anthk|4 days ago
atgreen|4 days ago
Regarding LLM-usage, the bulk of OpenLDK was written without the use of LLMs. But recently I let Claude loose on the code to fix a few remaining problems blocking kawa. Claude also upleveled the Java support from Java 8 to Java 21.
I wrote a couple of blog entries related to this work that might be of interest. One was around how I had to use the MOP to optimize method dispatch in CLOS for clojure: https://atgreen.github.io/repl-yell/posts/clos-mop-dispatch/
Per_Bothner|4 days ago
anthk|4 days ago
stared|4 days ago
cloudbonsai|4 days ago
https://en.wikipedia.org/wiki/Chiikawa
It's a portmanteau of "Chiisai" (small) and "Kawaii" (cute).
tmtvl|4 days ago
varjag|4 days ago
atgreen|4 days ago
rhkalth|4 days ago
klez|4 days ago