dimgigov
88866872be
Bugfixes: add cljQuot/cljRem to runtime, quot/rem to interpreter. Cleanup: remove unused processAgentActions and sequtils import. 164 tests pass.
2026-05-08 20:45:36 +03:00
dimgigov
30fde68fed
Phase 9: Agents (send/await/deref) + core.async channels (chan, >!, <!, close!, go). All phases complete.
2026-05-08 20:28:51 +03:00
dimgigov
1f9d662ed9
Phase 8: Tree-walking interpreter for in-memory REPL eval (~0.02ms vs 1133ms compiled). 66 eval tests.
2026-05-08 20:16:42 +03:00
dimgigov
feb9cee287
T7.4: Dependency resolution — deps.edn parser, Git deps, cljnim deps command, 12 tests
2026-05-08 20:05:19 +03:00
dimgigov
62ca70d05a
Phase 4/7: nREPL, Tool-call format, Module caching
...
T4.5 nREPL: TCP-based JSON REPL (cljnim repl --tcp 9999)
T4.6 Tool-call: {"tool":"cljnim/eval","args":{"form":"..."}}
T7.3 Module caching: nimcache/ in project dir, skip regen if unchanged
Phase 4 now 100% complete. Phase 7: 3/4 tasks done.
2026-05-08 19:57:39 +03:00
dimgigov
b67962dbba
Phase 5/6 complete: Transients, meta/with-meta, instance?
...
T5.5 Transients (transient/persistent!/conj!/assoc!)
- Mutable builder for batch vector/map operations
- Use with let bindings for proper ordering
T6.10 meta/with-meta — metadata on any CljVal via ref object field
T6.11 instance? — type predicate (instance? :integer 42)
Also marked T9.1 Atoms as done (already implemented earlier)
86 tests pass, all examples work.
Phases 0-6 now complete. Phase 7: 2/4 tasks done.
2026-05-08 19:48:35 +03:00
dimgigov
66d91cd086
Phase 7: ns declaration + multi-file compilation
...
T7.1: Namespace declaration parsing
(ns my.app (:require [lib :as l])) with :require/:as support
Hyphen-to-underscore filename convention (math-utils -> math_utils.clj)
T7.2: Multi-file compilation
Resolves requires, recursively loads dependencies
Inlines all defs into single Nim file
Namespace alias resolution (mu/square -> square)
86 tests pass, all examples work.
2026-05-08 19:37:35 +03:00
dimgigov
19ef69bf5b
Phase 6: slurp, spit, read-line, range 3-arg, repeat/cycle/iterate, interleave
...
Phase 6 Clojure Core Library now complete (except meta):
- T6.3: slurp (alias for file/read)
- T6.4: spit (alias for file/write)
- T6.5: read-line (stdin input)
- T6.6: range with 3 args (start, end, step)
- T6.7: repeat, cycle, iterate (eager implementations)
- T6.9: interleave
- Updated TASKS.md and ROADMAP.md
2026-05-08 19:24:06 +03:00
dimgigov
6dfc2a9308
Phase 5: HAMT Persistent Map + Persistent Set, 86 tests pass
...
- T5.3: HAMT Persistent Map (lib/cljnim_pmap.nim)
O(log32 n) assoc/dissoc/get with structural sharing
16 unit tests, ckMap migrated from seq to HAMT
- T5.4: Persistent Set backed by HAMT map
ckSet with conj/disj/contains?/get, set literal #{}
- Fix: cljContains/cljCount return CljVal (not bool/int)
- Fix: equality in generics via explicit cljEq parameter
- Updated roadmap, task board, CI/Makefile
2026-05-08 19:13:09 +03:00