← overview

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

NamespaceImplementedMismatchedMissingDialect-Only
clojure.core78.9%536 / 67928014354
clojure.core.protocols27.3%3 / 11281
clojure.core.reducers0.0%0 / 210210
clojure.data20.0%1 / 5042
clojure.datafy0.0%0 / 2020
clojure.edn100.0%2 / 2204
clojure.instant0.0%0 / 5050
clojure.math0.0%0 / 450450
clojure.pprint76.9%20 / 268614
clojure.set100.0%12 / 121002
clojure.spec.alpha0.0%0 / 870870
clojure.string81.0%17 / 21349
clojure.template100.0%2 / 2100
clojure.test17.9%7 / 395326
clojure.walk100.0%10 / 10402
clojure.zip0.0%0 / 280280

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)

DateImplementedVars
2026-05-2361.3%610 / 995