← overview

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

NamespaceImplementedMismatchedMissingDialect-Only
clojure.core92.6%629 / 679255018
clojure.core.protocols45.5%5 / 11060
clojure.core.reducers0.0%0 / 210210
clojure.data40.0%2 / 5030
clojure.datafy100.0%2 / 2000
clojure.edn100.0%2 / 2000
clojure.instant40.0%2 / 5030
clojure.math100.0%45 / 45000
clojure.pprint53.8%14 / 260121
clojure.set100.0%12 / 12000
clojure.spec.alpha100.0%87 / 87002
clojure.string100.0%21 / 21000
clojure.template100.0%2 / 2100
clojure.test94.9%37 / 39020
clojure.walk100.0%10 / 10000
clojure.zip100.0%28 / 28000

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/file
    • babashka.fs/list-dir
    • babashka.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/process
    • babashka.process/sh
    • babashka.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)

DateImplementedVars
2026-05-2390.3%898 / 995
2026-05-2290.3%898 / 995