Skip to content

cljgo 0.1.0

Choose a tag to compare

@github-actions github-actions released this 15 Jul 19:01
7f9bc8b

Changelog

  • f76b155: ADR 0009: comptime — Clojure macros unchanged + Zig-style compile-time values (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 9112815: ADR 0010 Go interop surface (Java-interop parity); ADR 0011 C FFI (purego primary, cgo first-class) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • cb80706: ADR 0012 testing first-class (cljgo test, dual-harness for users); ADR 0013 library first-class (exe/Go lib/C lib/WASM from one codebase) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • a606944: ADR 0014: Result/Option error-handling primitives (Rust/Elm-style), exceptions stay Clojure (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 401362c: ADR 0015: structured JSON diagnostics + debug-mode compiler introspection API (agent-native tooling) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 0fb647a: ADR 0016: persistent REPL sessions, resume by id (replay-journal as state) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 35685e0: ADR 0017: .cljg extension; tree-sitter adopt-not-fork; cljgo lsp as thin adapter over ADR 0015 (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 64faa06: ADR 0018: REPL ergonomics — exit/quit/help fallbacks, did-you-mean (Ruby-inspired, precedence-safe) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • f28d4db: Add GitHub Pages landing site for cljgo (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 2585fba: Add MIT LICENSE + NOTICE, credit upstreams in README before going public (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • ac9c755: Batch 1 cheap-breadth: predicates + coercions + seq/coll fns (ADR 0022) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • b6ccbdd: Batch 2: numeric tower — bigint/bigdec, ratios, promotion, bit-*, parse/rand, == (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 786c575: Batch 3: transients (transient/persistent!/conj!/assoc!/dissoc!/disj!/pop!) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 6031ef0: Binary size: strip emitted binaries by default (-33%, ADR 0023) + cross-compile & suite-remediation plan (design/08) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 67f2554: Design phase: architecture, component designs, spikes (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 27b59da: Destructuring: full vector+map+&rest+:as in let/loop/fn/defn (core Clojure fidelity) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 44d5043: Diagnostics CLI: cljgo check/explain --json structured output (ADR 0015) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 40a2f75: Diagnostics foundation (ADR 0015): pkg/diag schema + registry (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • a6451c1: Editor tooling (ADR 0017): tree-sitter queries + VS Code/Emacs packs (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 4c58b44: M0-A: promote S4 runtime to pkg/lang; fix Equiv/Equals split (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • c4441fd: M0-B: reader phase 0 (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 93efae3: M0-C: AST, analyzer, tree-walk evaluator (v0 ops) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • ebc5cfa: M0-D: REPL driver, cljgo CLI, conformance suite — M0 complete (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 3411b12: M1-A: reader phase 1 — syntax-quote, dispatch forms (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 86ebd4e: M1-B: loop*/recur, dynamic vars, set!, namespaces (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 0572532: M1-C: macroexpansion, defmacro, embedded core.clj — M1 complete (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 7059c50: M2: Go emitter v0 — cljgo build produces native binaries (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 3c4c2b1: M3-v0 AOT interop: go/packages direct-call emission + shaping, dual-mode identical (ADR 0010, spike S2) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 71184a3: M3-v0 conformance: interop dual-harness tests (strings/numbers/[v err]/! throw) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 0f29825: M3-v0 interop contract: OpHostRef/OpHostCall + ResolveHost hook (ADR 0010) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 538dce6: M3-v0 interpreted interop: require-go + reflect registry + [v err]/!/nil-norm shaping (ADR 0010) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 0943ec9: M3-v0: interop example fixture (verified interpreted) + spec [v err] zero-value fix (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 0764200: M3.1 interop: method calls (.Method) dual-mode via reflection (ADR 0010) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 8375184: M3.2 interop: field access (.-Field), set!, struct ctors (T.), go/new — dual-mode reflection (ADR 0010) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 469f8b4: M4 channels & go v0: chan/>!/<!/close!/go over real goroutines, dual-mode (design/05 §4) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 2fcbd40: M4+ concurrency: alts!/timeout/dropping+sliding buffers over reflect.Select (design/05 §4) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 7f87ada: Merge Batch 1 cheap-breadth (ADR 0022): predicates/coercions/seq-coll fns + lazy concat fix; suite -> 102/242 (42.1%) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 76d68bd: Merge Batch 2 numeric tower (ADR 0022): bigint/bigdec/ratio/bit-/parse-/promoting-arith + tower literal emission; suite 34->52 (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 9221c51: Merge Batch 3 transients (ADR 0022): transient/persistent!/conj!/assoc!/dissoc!/disj!/pop! + pkg/lang map transient fix; suite 34->39 (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 0cbf465: Merge GitHub Pages site: landing + install/quickstart + Pages-via-Actions deploy (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 9175ddd: Merge Track 1: full destructuring in let/loop/fn/defn (core Clojure fidelity) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • a003048: Merge Track 2: try/catch/finally/throw + ex-info/ex-data, dual-mode (eval v3) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 06da667: Merge Track 3: M4+ alts!/timeout/dropping+sliding buffers (design/05 §4) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 1bfd3ff: Merge Track A: M3.1 interop method calls (.Method) dual-mode (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 1f10f9a: Merge Track A: M3.2 interop field access, set!, struct ctors, go/new (ADR 0010) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 919116b: Merge Track B: M4 channels & go v0 (chan/>!/<!/close!/go, real goroutines, design/05 §4) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 5311130: Merge Track B: Result/Option primitives v0 (ok/err/just/none + combinators + let?, ADR 0014) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 9f7f3b2: Merge Track C: diagnostics CLI (cljgo check/explain --json, ADR 0015) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • dd6b189: Merge Wave2-A: clojure.core sequence & collection library (map/filter/reduce/... ~130 fns, lazy) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • ff1e609: Merge Wave2-B: clojure.test completion — thrown?/thrown-with-msg?/are, real :error (ADR 0012) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 601451b: Merge Wave2-C: reader Phase 2 — namespaced maps, reader conditionals, #uuid/#inst (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 0233cad: Merge Wave3-A: core control-flow macros (cond->/some->/as->/case/condp/doto/...) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 2c36ca0: Merge Wave3-B: clojure.string namespace + regex core fns (re-find/re-seq/join/split/replace/...) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 7453212: Merge Wave3-C: defprotocol/deftype/defrecord + extend-type/protocol (M5 polymorphism, ADR 0020) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • d4c1771: Merge Wave4-A: defmulti/defmethod multimethods (shared registry, no new AST op) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • f44f57a: Merge Wave4-B: require :as/:refer libspec + refer :only/:exclude (alias gap fix) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 2fcf68b: Merge build.cljgo build system B1+B2 (ADR 0021): build graph + exe/install/run + go-require third-party Go (gorilla/websocket, zero bindings) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 5a7482a: Merge clojure-test-suite harness (ADR 0022): resolve/eval/var? + ns macro + when-var-exists shim + cljgo suite runner; measured baseline 34/242 (14%) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • ecd31f1: Merge competitive gap analysis (design/09): ADOPT/ADAPT/DEFER/REJECT verdicts vs glojure/let-go/cljs2go/jank (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 12d4259: Multimethods v0: defmulti/defmethod + methods/get-method/remove-method (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 0da0d5f: OpenSpec: archive m3-interop-v0; promote go-interop capability spec (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 14a34ad: OpenSpec: five validated changes for proposed ADRs (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 79a869a: OpenSpec: m3-interop-v0 change (proposal/design/tasks/spec) — ADR 0010 (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • e025b9b: Plan: build.cljgo (Zig-style build, ADR 0021), clojure-test-suite compliance (ADR 0022), design/08 roadmap (build+comptime+compat) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • da48ebc: Polymorphism v0: defprotocol/deftype/defrecord/extend-* (ADR 0020) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 4d0428e: Precedence principle: Clojure is first-class, additions rename around it; ratify just/none (ADR 0014) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 1d8abb6: Printer fidelity: Java Double.toString semantics, ##Inf/##NaN, () for empty list (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 2ca736f: Process: OpenSpec init, repo CLAUDE.md, ADR backfill 0001-0008 (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 4f593d1: README: M3.1/3.2 members, M4 channels, Result/Option, diagnostics shipped (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 7e8e455: README: reflect shipped state (M0-M3-v0) + runnable interop demo (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 24133d6: REPL ergonomics + sessions wired (ADR 0018, 0016) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • a067e63: REPL robustness: evaluate forms as each completes; Interrupt seam (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 60abe3e: Reader Phase 2: namespaced maps, reader conditionals, #uuid/#inst (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 8325032: Result/Option primitives v0: ok/err/just/none + combinators + let? (ADR 0014, spike S11) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 7f9bc8b: Set the boot budget in release.yml too; record that ubuntu ~3s reproduces (#2) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • d63ff36: Spike S11: Result/Option representation — type-per-tag (D) wins (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 0827c1f: Spike round: all ten validated; architecture amended (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 6e88b5e: Testing first-class: interpreted clojure.test slice (ADR 0012) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 74dc9df: Track 3 Batch 0: clojure-test-suite harness + baseline (ADR 0022) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 5f0aa3a: build.cljgo B1: Zig-style build graph + single-exe (ADR 0021) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 8c277c7: build.cljgo B2: go-require — third-party Go with zero bindings (ADR 0021) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 2a42f5c: cljgo 0.1.0: version surface, CI, and GoReleaser (#1) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • aec2172: clojure.core sequence & collection library (map/filter/reduce + ~130 fns) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 7737c92: clojure.string namespace + regex core fns (re-find/re-matches/re-seq/...) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 5c17b46: clojure.test: real thrown?/thrown-with-msg? + are + per-assertion :error (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 34d8c72: core: add control-flow macros (cond->/some->/as->/case/condp/if-some/doto/while/dorun/doall) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • d318b23: design/09: competitive gap analysis vs glojure/let-go/cljs2go/upstream (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 795d1d4: require: honor :as aliases and :refer libspec options (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • ebe44bb: result-option-primitives: resolve D1 representation from spike S11 (type-per-tag) (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 3e6dd5e: site: redesign landing to deemwar system with Clojure-green x Go-cyan accent; theme toggle, terminal hero, live 23.6% suite (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 24c81b9: site: sync suite baseline to measured 34/242 (14%) from harness run (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)
  • 786b9fc: try/catch/finally/throw + ex-info: dual-mode exceptions (Muthukumaran Navaneethakrishnan muthuishere@gmail.com)

Install

go install github.com/muthuishere/cljgo/cmd/cljgo@v0.1.0

Or download a binary above and put it on your PATH.

cljgo repl, cljgo run and Go interop work from the binary alone, with no
Go toolchain installed. cljgo build additionally needs the Go toolchain
and a checkout of this repo
— the generated module replaces the runtime to
a local source tree, so set CLJGO_SRC to your clone or run inside it. Known
v0 limitation (ADR 0013); publishing the runtime as a real Go module retires it.


cljgo's own code is MIT. The vendored runtime under pkg/lang/ is
EPL-1.0, from Glojure — see
NOTICE.