*ns* is interned in clojure.core holding the current NAMESPACE OBJECT, kept in sync by ctx-set-current-ns through a var table cached on the env (one table put on the hot path; core-bench A/B neutral). A thread binding (binding [*ns* ...]) shadows the root through var-get as usual. in-ns now returns the namespace object (Clojure); str renders a namespace as its name and pr-str as #namespace[name]. The ns-designator helper accepts namespace objects (they are tagged STRUCTS — the old table?-based check never matched them), so (ns-aliases *ns*) / (ns-unalias *ns* 'a) work — SCI and the jank syntax-quote corpus use exactly that shape. Known divergence (documented): inside an interpreted fn, *ns* reflects the fn's defining ns (jolt's resolution model rebinds current-ns per call); top-level and load-time reads match Clojure. Gate green (conformance 326x3, suite 4572 >= 4540, all batteries, specs+unit +8 *ns* rows); bench neutral. |
||
|---|---|---|
| .. | ||
| bench | ||
| clojure-stdlib/clojure | ||
| integration | ||
| spec | ||
| support | ||
| unit | ||