https://github.com/fulcrologic/fulcro-spec 3.2.10. • Bugfix in babashka support
https://github.com/fulcrologic/statecharts5 • Removed direct dependency on promesa for async charts (added new shim which auto-morphs to promesa if on classpath) • The above allows babashka to now run charts that leverage the statechart async features
FWIW bb support for promesa was merged a year ago. not sure if there's been a release since (cc @niwinz)
What I could find didn’t work, but that would be awesome if it does. That said, it was a thin shim and it removes a downstream dep, so I’m not that concerned.
From what I saw the tests in that library use bb to RUN the tests, but the support requires stuff that SCI can’t do yet (was what Claude told me):
Summarize why promesa does not work in bb
⏺ Why promesa doesn't load in babashka
Babashka runs Clojure via SCI (Small Clojure Interpreter), not the JVM Clojure compiler. SCI implements most of Clojure, but it deliberately doesn't
reach all the way into the JVM compiler's extension surface. Promesa hits two of those gaps during its own load:
1. extend-protocol clojure.core/Inst (promesa.util, v10+)
Promesa extends the clojure.core/Inst protocol to its promise types so it can interoperate with date/time and "instant-like" values. The problem: in
SCI, Inst isn't exposed as an extendable protocol — it's known about, but you can't pass it to extend-protocol. Loading promesa.util aborts at
macroexpand time.
2. defrecord against java.util.function.Supplier (promesa.exec, v6+)
promesa.exec defines a defrecord that implements the Java interface java.util.function.Supplier so it can hand promesa values to executors that expect
Supplier. SCI's defrecord only knows how to implement Clojure protocols — it doesn't synthesize bytecode for arbitrary Java interfaces. The form fails
to expand.
Either failure is enough to prevent the whole library from loading. They've held across promesa 7.x through 12.x-RC because both are part of how promesa
integrates with the JVM ecosystem — it would take a (likely conditional) rewrite upstream to remove them.the master version works, it has a bb.edn with a test runner
I think promesa might just not have a release for a very long time
ah…that’s entirely possible
Like I said, not heartbroken by removing an upstream dep
I can try to bump a release to clojars, I guess the last RC was only on github
https://github.com/clojure/core.unify - Release 0.7.3 • UNIFY-3: Documentation cleanup • UNIFY-12: Fixed dropped occurs flag on recursive calls • UNIFY-13: Fixed CLJ-specific test