d7e5697f3a
- Reader: prefer :default over :clj in reader conditionals
- Emitter: add cond, definterface, new special forms
- Emitter: ns handler registers namespace aliases from :require
- Emitter: when body always discarded (fixes type mismatch with else)
- Emitter: try/catch maps clojure.lang.ExceptionInfo → ExInfo, scope catch vars
- Emitter: def inside proc uses var (not {.global.}), removed debug output
- Runtime: cljRandomUuid, cljSystemGetProperty, cljVresetB, cljRestartAgent
- Runtime: cljRequire, cljEvalStub, cljResolve no-op stubs
- Runtime: Boolean/Object/Integer/Long/Float/Double constructors
- Runtime: seq overloads for cljAssoc, cljDissoc, cljGet, cljExInfo, cljTransduce
- Unit tests: 78/80 (was 77/80)
- 3 remaining: not_eq (cross-namespace), add_watch/remove_watch (def hoisting)
1014 B
1014 B
Clojure/Nim — Test Suite Compliance Plan
Current Status: 230/233 (98.7%)
| Component | Pass | Total | % |
|---|---|---|---|
| clojure.string | 8 | 8 | 100% |
| clojure.core | 222 | 225 | 98.7% |
| Total | 230 | 233 | 98.7% |
Unit Tests: 78/80 pass (97.5%)
emit symbol— returnscljSymbol(...)instead of raw nameemit mangled symbol— same issue
3 Remaining Compliance Failures
| # | Test | Error | Root Cause |
|---|---|---|---|
| 1 | not_eq |
undeclared 'eq_SLASH_tests' |
Cross-namespace: eq/tests fn from clojure.core-test.eq not loaded |
| 2 | add_watch |
undeclared 'testvar_a' |
(def testvar-a 0) inside deftest body — Nim requires var decl before use in closures |
| 3 | remove_watch |
undeclared 'watchable' |
Same — (def watchable 0) inside deftest body, referenced in closures |
All 3 require deeper architectural changes:
- Multi-file compilation or inline required namespaces
- Top-level def hoisting across closure boundaries