← overview

jank

Implemented
69.0%687 / 995 vars
Reported clojure-version
jank-alpha
Clojure (JVM) Version
1.12.4
Snapshot Taken
2026-05-23 16:05 UTC

Per-Namespace Implementation

NamespaceImplementedMismatchedMissingDialect-Only
clojure.core89.0%604 / 679707571
clojure.core.protocols0.0%0 / 110110
clojure.core.reducers0.0%0 / 210210
clojure.data0.0%0 / 5050
clojure.datafy0.0%0 / 2020
clojure.edn0.0%0 / 2020
clojure.instant0.0%0 / 5050
clojure.math0.0%0 / 450450
clojure.pprint0.0%0 / 260260
clojure.set100.0%12 / 12001
clojure.spec.alpha0.0%0 / 870870
clojure.string100.0%21 / 21000
clojure.template100.0%2 / 2000
clojure.test97.4%38 / 39016
clojure.walk100.0%10 / 10000
clojure.zip0.0%0 / 280280

Documented Extensions (1)

Vars in this surface that are intentionally outside Clojure (JVM), as documented in the dialect's registry.

JVM-static value remap1 entry
  • Seamless C++ interop via cpp/ tag

    Since
    jank-0.1
    Affected Vars
    • cpp/jank.runtime.object_ref
    • cpp/std.chrono.milliseconds
    • cpp/std.cout
    • cpp/std.exception
    • cpp/std.getenv
    • cpp/std.this_thread.sleep_for
    Rationale
    jank's defining feature: any C++ type, function, or static is reachable from jank source via cpp/. Type conversion is implicit at the boundary. Roughly the jank analog of JVM Clojure's Java interop, but with AOT-compiled C++ instead of JVM reflection.

Documented Intentional Divergences (8)

Decisions where this surface intentionally departs from Clojure (JVM), as documented in the dialect's registry.

Reader behavior1 entry
  • Reader conditional :clj does not fire under jank

    Since
    jank-0.1
    Rationale
    Portable code uses :jank (or :default) to target jank. Code under :clj is invisible to jank's reader.
Printer behavior1 entry
  • *print-namespace-maps* / *print-length* / *print-level* not exposed

    Since
    jank-0.1
    Rationale
    jank-0.1-alpha does not yet provide the dynvars that control pretty-printing. Code that (binding [*print-length* 10] ...) fails at compile time with unresolved-var. Pending stdlib expansion.
Error message shapes1 entry
  • catch targets C++ types, not JVM classes

    Since
    jank-0.1
    Rationale
    (catch cpp/jank.runtime.object_ref e ...) for runtime objects; (catch cpp/std.exception e ...) for native exceptions. Portable code uses :jank reader conditionals around catch targets.
JVM-static value remap1 entry
  • Host interop is C++ via cpp/, not Java

    Since
    jank-0.1
    Rationale
    jank's host is LLVM/C++. Methods, types, and static functions are referenced via cpp/ (e.g. cpp/std.getenv, cpp/std.chrono.milliseconds). JVM-shaped interop (System/getenv, Math/PI) does not resolve.
Namespace mechanics3 entries
  • Alpha-stage: any specific behavior may change before 1.0

    Since
    jank-0.1
    Rationale
    jank is pre-1.0. The current snapshot reflects what is implemented today; behavior, var availability, and error shapes will continue to evolve. Hand-curated divergences here are starting points, not the final contract.
  • require resolves at compile time, not runtime

    Since
    jank-0.1
    Rationale
    An unknown module aborts the script before any try/catch can intercept. Portable code that probes for optional namespaces via try-require must instead use a known-good list per dialect.
  • Many Clojure (JVM) stdlib namespaces are not yet implemented

    Since
    jank-0.1
    Rationale
    jank-0.1-alpha ships clojure.core, .string, .set, .walk, .test, .template. The other 10 namespaces in Clojure (JVM)'s target list (clojure.edn, .zip, .pprint, .math, .data, .datafy, .instant, .core.protocols, .core.reducers, .spec.alpha) are tracked for later releases.
Macro semantics1 entry
  • AOT-compiled; semantics may differ at compile vs runtime

    Since
    jank-0.1
    Rationale
    jank compiles ahead of time to LLVM IR. Macroexpansion and analysis happen during compilation; eval at runtime via the JIT is supported but exception behavior and var resolution timing can differ from JVM-Clojure's runtime model.

Drift Since 2026-05-22

Added Vars
0
Removed Vars
0
Changed Vars
0
Implementation Delta
+0.0000

History (2 Snapshots)

DateImplementedVars
2026-05-2369.0%687 / 995
2026-05-2269.0%687 / 995