I wrote up a post on how this works here https://yogthos.net/posts/2026-08-07-portable-jolt.html
I have one question, can one drop into Scheme the way one can call Java in clojure, or is one totally firewalled from the underlying Scheme implementation?
Great to see Gambit getting love too. Gambit and Chez are amazing achievements.
And yes, you absolutely can drop both down to Scheme and do FFI to drive native libs as well
https://jolt-lang.github.io/docs/host-interop.html
https://jolt-lang.github.io/docs/native-interop.html
I actually leverage this myself in libraries, I ended up writing a Java time layer to support tick here, and I decided to make it a library since I wanted the core executable to stay self contained, and Chez doesn't provide timezone handling natively. So, time pulls in a shared system library and shims a Java style API over it that tick can use
https://github.com/jolt-lang/time
And I'm doing FFI in Glimmer to provide a Reagent style reactive library on top of GTK
https://github.com/jolt-lang/glimmer
It ended up working pretty well for a project here https://github.com/yogthos/splat-painter
Definitely excited with the progress so far. It's obviously still very fresh, and there are likely bugs and quirks abound, but I find it's already quite usable for my own personal projects.
How does this fit into the ecosystem compared to something like Babashka?
I tried running a cross-platform (JVM, CLR, JS) Clojure project I'm working on, but it failed trying to load the JVM's `System/in`. Does Jolt handle reader conditionals? Is the intention for it to always follow the `:clj` branch or are you planning a `:cljolt` or something?
And it's a bit different from Babashka in providing easy access to Scheme and native libraries. And the code compiles to a standalone native binary. So, you can make a native GTK app for example.
The other big difference is performance. Babashka is an interpreter, but Jolt compiles the code. So, performance is close to the JVM in most cases.