clojure.core in Babashka
- Implemented
- 92.6%629 / 679
- Mismatched
- 25
- Missing
- 50
- Dialect-Only
- 18
Metadata Mismatches (25)
Vars present in both Clojure (JVM) and this surface but with differing arglists, :macro flag, or :dynamic flag.
| Var | Difference |
|---|---|
*assert* | :dynamic Clojure (JVM): false this surface: true |
*command-line-args* | :dynamic Clojure (JVM): false this surface: true |
*compile-files* | :dynamic Clojure (JVM): false this surface: true |
*compile-path* | :dynamic Clojure (JVM): false this surface: true |
*compiler-options* | :dynamic Clojure (JVM): false this surface: true |
*err* | :dynamic Clojure (JVM): false this surface: true |
*file* | :dynamic Clojure (JVM): false this surface: true |
*flush-on-newline* | :dynamic Clojure (JVM): false this surface: true |
*in* | :dynamic Clojure (JVM): false this surface: true |
*math-context* | :dynamic Clojure (JVM): false this surface: true |
*ns* | :dynamic Clojure (JVM): false this surface: true |
*out* | :dynamic Clojure (JVM): false this surface: true |
*print-dup* | :dynamic Clojure (JVM): false this surface: true |
*print-meta* | :dynamic Clojure (JVM): false this surface: true |
*print-readably* | :dynamic Clojure (JVM): false this surface: true |
*read-eval* | :dynamic Clojure (JVM): false this surface: true |
*reader-resolver* | :dynamic Clojure (JVM): false this surface: true |
*source-path* | :dynamic Clojure (JVM): false this surface: true |
*suppress-read* | :dynamic Clojure (JVM): false this surface: true |
*unchecked-math* | :dynamic Clojure (JVM): false this surface: true |
*warn-on-reflection* | :dynamic Clojure (JVM): false this surface: true |
destructure | arglists Clojure (JVM): ([bindings])this surface: ([b] [b loc]) |
sync | arglists Clojure (JVM): ([flags-ignored-for-now & body])this surface: ([_flags-ignored-for-now & body]) |
time | arglists Clojure (JVM): ([expr])this surface: ([_ _ expr]) |
vswap! | arglists Clojure (JVM): ([vol f & args])this surface: ([_ _ vol f & args]) |
Vars Present in Clojure (JVM) but Absent from This Surface (50)
| Var |
|---|
*agent* |
*allow-unresolved-vars* |
*fn-loader* |
*use-context-classloader* |
*verbose-defrecords* |
->ArrayChunk |
->Vec |
->VecNode |
->VecSeq |
-cache-protocol-fn |
-reset-methods |
EMPTY-NODE |
Inst |
accessor |
add-classpath |
agent-errors |
await1 |
bases |
cast |
clear-agent-errors |
compile |
construct-proxy |
create-struct |
definline |
definterface |
defstruct |
extenders |
find-keyword |
find-protocol-impl |
find-protocol-method |
gen-class |
gen-interface |
get-proxy-class |
import |
init-proxy |
inst-ms* |
io! |
method-sig |
mix-collection-hash |
pcalls |
primitives-classnames |
print-ctor |
proxy-name |
pvalues |
resultset-seq |
struct |
struct-map |
unquote-splicing |
vector-of |
with-loading-context |
Vars Present in This Surface but Not in Clojure (JVM) (18)
| Var |
|---|
-add-loaded-lib |
-locking-impl |
-new-dynamic-var |
-new-var |
-reified-methods |
-run-in-transaction |
-with-precision |
get-thread-binding-frame-impl |
global-hierarchy |
has-root-impl |
multi-fn-add-method-impl |
multi-fn-impl |
multi-fn?-impl |
protocol-type-impl |
proxy* |
reify* |
reset-thread-binding-frame-impl |
system-time |
Documented Intentional Divergences in This Namespace (3)
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.
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.