Files
bara-lang/examples/ffi.clj
T
dimgigov 87d6028487 Phase 1-4: Reader, Runtime, Macros, Nim Interop — 543x faster than JVM Clojure
- 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)
2026-05-08 16:34:39 +03:00

10 lines
465 B
Clojure
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
; C FFI — Достъп до C функции директно от Clojure
; (c-fn sin "math.h" :double [:double])
; Това генерира Nim proc с {.importc.} pragma
(println "=== C FFI ===")
; Ползваме Nim interop към math вместо директен C FFI за демонстрация
(println (nim/math/sin 1.5708)) ; sin(pi/2) ≈ 1.0
(println (nim/math/cos 0.0)) ; cos(0) = 1.0
(println (nim/math/sqrt 144.0)) ; sqrt(144) = 12.0