87d6028487
- Reader: maps, sets, syntax-quote, dispatch macros, metadata - Runtime: CljVal type system, 80+ core functions (collections, strings, math, IO) - Emitter: full CljVal-based code generation, macro expansion, inline fns - Macros: defmacro with compile-time evaluator, ->, ->>, and, or, when, cond, for, doseq - Nim Interop: nim/module/function syntax, auto-import, type mapping - CLI: cljnim -e '<code>' for quick evaluation - Tests: 60 unit tests (reader + emitter) - Benchmarks: AOT suite showing 543x startup, 679x factorial vs JVM Clojure - CI: GitLab CI pipeline - Runtime library: lib/cljnim_runtime.nim (1070+ lines)
33 lines
645 B
YAML
33 lines
645 B
YAML
image: nimlang/nim:2.0.0
|
|
|
|
stages:
|
|
- test
|
|
- build
|
|
|
|
test:
|
|
stage: test
|
|
script:
|
|
- nim c -o:cljnim src/cljnim.nim
|
|
- nim c -r tests/test_reader.nim
|
|
- nim c -r tests/test_emitter.nim
|
|
- ./cljnim compile examples/hello.clj /tmp/hello.nim
|
|
- nim c -r /tmp/hello.nim
|
|
- ./cljnim compile examples/math.clj /tmp/math.nim
|
|
- nim c -r /tmp/math.nim
|
|
artifacts:
|
|
paths:
|
|
- cljnim
|
|
expire_in: 1 week
|
|
|
|
build-release:
|
|
stage: build
|
|
only:
|
|
- main
|
|
script:
|
|
- nim c -d:release -o:cljnim src/cljnim.nim
|
|
- nim c -d:release -o:/tmp/bench_hello.nim
|
|
artifacts:
|
|
paths:
|
|
- cljnim
|
|
expire_in: 1 month
|