Phase 5: HAMT Persistent Vector + CI fixes

- Add lib/cljnim_pvec.nim: 32-way HAMT Persistent Vector with structural sharing
- Migrate ckVector from seq[CljVal] to PersistentVector[CljVal] in runtime
- Fix recursive pushLeaf bug (nil nodes at depth > 2)
- Fix defn/if return value bug: replace discard with result = in proc bodies
- Fix cljNth to accept CljVal index
- Add len and [] overloads for PersistentVector seq compatibility
- Add tests/test_pvec.nim (14 tests)
- Update .gitlab-ci.yml to nim:2.2.10 and add test_pvec
- Update docs/ROADMAP.md and add PHASE5_HAMT.md
This commit is contained in:
2026-05-08 17:58:00 +03:00
parent dbf05f4e96
commit d763e25638
7 changed files with 493 additions and 61 deletions
+4 -4
View File
@@ -1,4 +1,4 @@
image: nimlang/nim:2.0.0
image: nimlang/nim:2.2.10
stages:
- test
@@ -10,10 +10,11 @@ test:
- nim c -o:cljnim src/cljnim.nim
- nim c -r tests/test_reader.nim
- nim c -r tests/test_emitter.nim
- nim c -r tests/test_pvec.nim
- ./cljnim compile examples/hello.clj /tmp/hello.nim
- nim c -r /tmp/hello.nim
- nim c --path:lib -r /tmp/hello.nim
- ./cljnim compile examples/math.clj /tmp/math.nim
- nim c -r /tmp/math.nim
- nim c --path:lib -r /tmp/math.nim
artifacts:
paths:
- cljnim
@@ -25,7 +26,6 @@ build-release:
- main
script:
- nim c -d:release -o:cljnim src/cljnim.nim
- nim c -d:release -o:/tmp/bench_hello.nim
artifacts:
paths:
- cljnim