Crystal's interpreter is a pretty nice one for a compiled LLVM language, but I kinda wanted it to be a bit more robust and feel less like it wasn't an integral part of the whole thing. Like it is in Common Lisp.

Few million tokens later, I have a prototype of something like that. A JIT interpreter that is trying to reach feature parity with the default AOT compiler.

Probably will never be good enough for a PR since I don't understand half of it, and I'm not interested in submitting "slop" like that. But I'll probably keep the little demons maintaining the branch for my own amusement.

Also it should eventually (not quite yet) do hot reloading, which should enable dynamic modules written in Crystal. Not without caveats obviously, because Crystal has carved some pretty hard architectural decisions to get the kind of performance and type discipline they have from a Ruby basis, and I'm not changing those.

Branch is easily found if you care that much, but because of the slop aspect, I'm not directly advertising the link.

#crystal #crystallang

@vegai the interpreter was definitely not envisioned in the very beginning.

I think is great that we can explorer further with llm. But i do feel uneasy about incorporating changes that we don’t fully understand in software that other depends on. For personal use go ahead. It seems we are on the same page.

If you use it, a way forward is to learn from it and start breaking it into pieces that can be incorporated while understanding it.

Happy Crystaling!