Babashka
- Implemented
- 90.3%898 / 995 vars
- Reported
clojure-version - 1.12.4-SCI
- Clojure (JVM) Version
- 1.12.4
- Snapshot Taken
- 2026-05-23 15:06 UTC
Per-Namespace Implementation
| Namespace | Implemented | Mismatched | Missing | Dialect-Only |
|---|---|---|---|---|
| clojure.core | 92.6%629 / 679 | 25 | 50 | 18 |
| clojure.core.protocols | 45.5%5 / 11 | 0 | 6 | 0 |
| clojure.core.reducers | 0.0%0 / 21 | 0 | 21 | 0 |
| clojure.data | 40.0%2 / 5 | 0 | 3 | 0 |
| clojure.datafy | 100.0%2 / 2 | 0 | 0 | 0 |
| clojure.edn | 100.0%2 / 2 | 0 | 0 | 0 |
| clojure.instant | 40.0%2 / 5 | 0 | 3 | 0 |
| clojure.math | 100.0%45 / 45 | 0 | 0 | 0 |
| clojure.pprint | 53.8%14 / 26 | 0 | 12 | 1 |
| clojure.set | 100.0%12 / 12 | 0 | 0 | 0 |
| clojure.spec.alpha | 100.0%87 / 87 | 0 | 0 | 2 |
| clojure.string | 100.0%21 / 21 | 0 | 0 | 0 |
| clojure.template | 100.0%2 / 2 | 1 | 0 | 0 |
| clojure.test | 94.9%37 / 39 | 0 | 2 | 0 |
| clojure.walk | 100.0%10 / 10 | 0 | 0 | 0 |
| clojure.zip | 100.0%28 / 28 | 0 | 0 | 0 |
Documented Extensions (3)
Vars in this surface that are intentionally outside Clojure (JVM), as documented in the dialect's registry.
JVM-static value remap3 entries
babashka.fs -- host filesystem helpers
- Since
bb-0.6.0- Affected Vars
babashka.fs/exists?babashka.fs/filebabashka.fs/list-dirbabashka.fs/path
- Rationale
- Cross-platform filesystem operations exposed as a namespace instead of through clojure.java.io's File-centric API. Closer to nio.file semantics.
babashka.process -- subprocess invocation
- Since
bb-0.6.0- Affected Vars
babashka.process/processbabashka.process/shbabashka.process/shell
- Rationale
- Replaces clojure.java.shell with a richer surface: pipelines, env override, working-dir control, streaming stdin/stdout. Standard in bb scripts.
babashka.pods -- load extension binaries
- Since
bb-0.2.0- Affected Vars
babashka.pods/load-pod
- Rationale
- Pods are binaries that expose Clojure namespaces via a JSON/EDN-over-stdio protocol. They extend bb's surface at runtime without bytecode.
Documented Intentional Divergences (6)
Decisions where this surface intentionally departs from Clojure (JVM), as documented in the dialect's registry.
Collection semantics1 entry
clojure.core.reducers is not bundled
- Since
bb-1.0- Rationale
- bb omits the reducers namespace -- fold/r/map etc. are not available. Transducers cover the typical use cases.
JVM-static value remap4 entries
gen-class is not supported
- Since
bb-1.0- Rationale
- gen-class emits AOT JVM bytecode. SCI interprets; there is no class to emit.
proxy emits no JVM class
- Since
bb-1.0- Rationale
- proxy generates a JVM class at runtime; SCI has no bytecode emitter. defrecord + protocols cover the portable use case.
clojure.reflect is not bundled
- Since
bb-1.0- Rationale
- JVM reflection is available via clojure.core/bean and member-access, but the clojure.reflect namespace is omitted from bb's bundle.
No classpath-time loading of user-supplied .class files
- Since
bb-1.0- Rationale
- bb is a self-contained binary; the JVM classloader / classpath model that Clojure (JVM) code can poke at (clojure.lang.RT/baseLoader, etc.) is not exposed.
Macro semantics1 entry
eval / load-string interpret via SCI, not Compiler
- Since
bb-1.0- Rationale
- Macroexpansion semantics generally match Clojure (JVM) but the underlying interpreter is SCI, so certain macro hygiene edge cases that rely on the Clojure Compiler's specific behavior may differ.
Drift Since 2026-05-22
- Added Vars
- 0
- Removed Vars
- 0
- Changed Vars
- 0
- Implementation Delta
- +0.0000
History (2 Snapshots)
| Date | Implemented | Vars |
|---|---|---|
| 2026-05-23 | 90.3% | 898 / 995 |
| 2026-05-22 | 90.3% | 898 / 995 |