← overview

Joker

Implemented
48.1%479 / 995 vars
Reported clojure-version
1.7.1-joker
Clojure (JVM) Version
1.12.4
Snapshot Taken
2026-05-23 16:04 UTC

Per-Namespace Implementation

NamespaceImplementedMismatchedMissingDialect-Only
clojure.core56.8%386 / 6795829320
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.math26.7%12 / 45123333
clojure.pprint3.8%1 / 260250
clojure.set100.0%12 / 12000
clojure.spec.alpha0.0%0 / 870870
clojure.string95.2%20 / 21515
clojure.template100.0%2 / 2000
clojure.test92.3%36 / 39130
clojure.walk100.0%10 / 10000
clojure.zip0.0%0 / 280280

Documented Extensions (4)

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

JVM-static value remap4 entries
  • joker.filepath -- path manipulation

    Since
    joker-1.0
    Affected Vars
    • joker.filepath/abs
    • joker.filepath/base
    • joker.filepath/dir
    • joker.filepath/ext
    • joker.filepath/join
    Rationale
    Replaces clojure.java.io's File-centric path helpers with a string-first API matching Go's path/filepath package.
  • joker.{json,yaml,csv} -- data-interchange formats

    Since
    joker-1.0
    Affected Vars
    • joker.csv/read-string
    • joker.json/read-string
    • joker.json/write-string
    • joker.yaml/read-string
    • joker.yaml/write-string
    Rationale
    Built-in parsers/emitters for common data formats. On the JVM, equivalents live in third-party libraries (cheshire, clj-yaml, clojure.data.csv).
  • joker.os -- host process and environment access

    Since
    joker-1.0
    Affected Vars
    • joker.os/env
    • joker.os/exec
    • joker.os/exit
    • joker.os/get-env
    • joker.os/sh
    Rationale
    Replaces System/getenv, java.lang.ProcessBuilder, and clojure.java.shell with a Go-flavored API.
  • joker.tools.cli -- command-line argument parsing

    Since
    joker-1.0
    Affected Vars
    • joker.tools.cli/parse-opts
    Rationale
    A port of org.clojure/tools.cli to Joker's interpreter; same API shape, no JVM dependency.

Documented Intentional Divergences (7)

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

Type-system representation1 entry
  • Joker performs lint-time type checking

    Since
    joker-1.0
    Rationale
    Many shape errors that Clojure (JVM) reports at runtime are reported at lint time by Joker (joker --lint). This shifts the failure mode but does not change the runtime semantics of correct code.
Reader behavior1 entry
  • Reader conditional :clj does not fire under Joker

    Since
    joker-1.0
    Rationale
    Joker uses :joker for its own branches. Code under :clj is not evaluated by Joker's reader.
Printer behavior1 entry
  • *print-namespace-maps* / *print-length* / *print-level* not exposed

    Since
    joker-1.0
    Rationale
    Joker's pr-str emits a canonical form without exposing these binding-controlled dynvars to user code. Portable code that depends on binding them must guard with a :joker reader conditional.
Collection semantics1 entry
  • Several core fns lack the single-arg transducer arity

    Since
    joker-1.0
    Rationale
    `(map f)`, `(filter pred)`, etc. -- the transducer forms -- are not all implemented. Calling `(into [] (map inc) coll)` with the single-arg transducer form raises an arity error. The sequence-returning forms (`(map f coll)`) work as expected.
JVM-static value remap1 entry
  • Host runtime is Go, not the JVM

    Since
    joker-1.0
    Rationale
    Interop targets Go packages, not java.lang.*. JVM-static names (System/getenv, Math/PI, java.io.File) do not resolve; equivalents are reached via Joker's batteries-included joker.os, joker.filepath, joker.http, etc.
Namespace mechanics2 entries
  • clojure.spec.alpha is not implemented

    Since
    joker-1.0
    Rationale
    Spec's macro and dynamic-registry design does not fit Joker's lint-time analysis. Code that uses spec must guard with a :joker reader conditional.
  • Joker is a deliberate subset of Clojure

    Since
    joker-1.0
    Rationale
    Joker targets scripting and linting; it ships joker.core, joker.string, joker.set, joker.walk, joker.test, joker.template, joker.pprint, joker.math. clojure.edn, .zip, .data, .core.protocols, .core.reducers, .datafy, .instant, .spec.alpha are not implemented.

Drift Since 2026-05-22

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

History (2 Snapshots)

DateImplementedVars
2026-05-2348.1%479 / 995
2026-05-2248.1%479 / 995