Basilisp
- Implemented
- 61.3%610 / 995 vars
- Reported
clojure-version - unknown
- Clojure (JVM) Version
- 1.12.4
- Snapshot Taken
- 2026-05-23 20:49 UTC
Per-Namespace Implementation
| Namespace | Implemented | Mismatched | Missing | Dialect-Only |
|---|---|---|---|---|
| clojure.core | 78.9%536 / 679 | 280 | 143 | 54 |
| clojure.core.protocols | 27.3%3 / 11 | 2 | 8 | 1 |
| clojure.core.reducers | 0.0%0 / 21 | 0 | 21 | 0 |
| clojure.data | 20.0%1 / 5 | 0 | 4 | 2 |
| clojure.datafy | 0.0%0 / 2 | 0 | 2 | 0 |
| clojure.edn | 100.0%2 / 2 | 2 | 0 | 4 |
| clojure.instant | 0.0%0 / 5 | 0 | 5 | 0 |
| clojure.math | 0.0%0 / 45 | 0 | 45 | 0 |
| clojure.pprint | 76.9%20 / 26 | 8 | 6 | 14 |
| clojure.set | 100.0%12 / 12 | 10 | 0 | 2 |
| clojure.spec.alpha | 0.0%0 / 87 | 0 | 87 | 0 |
| clojure.string | 81.0%17 / 21 | 3 | 4 | 9 |
| clojure.template | 100.0%2 / 2 | 1 | 0 | 0 |
| clojure.test | 17.9%7 / 39 | 5 | 32 | 6 |
| clojure.walk | 100.0%10 / 10 | 4 | 0 | 2 |
| clojure.zip | 0.0%0 / 28 | 0 | 28 | 0 |
Documented Extensions (0)
Vars in this surface that are intentionally outside Clojure (JVM), as documented in the dialect's registry.
None.
Documented Intentional Divergences (6)
Decisions where this surface intentionally departs from Clojure (JVM), as documented in the dialect's registry.
Numeric tower1 entry
Numeric tower follows Python, not JVM Clojure
- Since
basilisp-0.1- Rationale
- Integers are arbitrary-precision by default (Python's int). Float is IEEE-754 double, as on the JVM. Ratio is implemented as fractions.Fraction. Overflow semantics on auto- promoted ops match Python's rules, not the JVM's Long boxing model.
Reader behavior1 entry
Reader conditional :clj does not fire under Basilisp
- Since
basilisp-0.1- Rationale
- Basilisp uses the :lpy feature for its own branches. Code under :clj is not evaluated by Basilisp's reader.
Concurrency primitives1 entry
Python's GIL constrains threaded concurrency
- Since
basilisp-0.1- Rationale
- Atoms, refs, and agents work, but CPython's Global Interpreter Lock serializes bytecode execution. Threaded throughput differs from JVM Clojure in both absolute speed and the granularity of fairness.
Error message shapes1 entry
Exceptions are Python exceptions
- Since
basilisp-0.1- Rationale
- (catch Exception e ...) catches a Python Exception, not a java.lang.Exception. Code that catches specific JVM exception classes (e.g. java.io.IOException) must use Python-host equivalents (OSError) under a :lpy reader conditional.
JVM-static value remap1 entry
Host runtime is Python 3, not the JVM
- Since
basilisp-0.1- Rationale
- Interop targets Python objects, not java.lang.*. JVM-static names (System/getenv, Math/PI, Integer/parseInt) do not resolve; equivalents are reached via Python interop (operator, os.environ, math).
Namespace mechanics1 entry
Several Clojure (JVM) stdlib namespaces are not implemented
- Since
basilisp-0.1- Rationale
- Basilisp ships clojure.core, .string, .set, .walk, .test, .template; coverage of .edn, .pprint, .data, .zip, .math, .datafy, .instant, .core.protocols, .core.reducers, and .spec.alpha varies by release. Refer to upstream release notes for the current state.
History (1 Snapshot)
| Date | Implemented | Vars |
|---|---|---|
| 2026-05-23 | 61.3% | 610 / 995 |