Skip to content

Releases: nooga/let-go

v1.10.0

08 Jun 17:25
Immutable release. Only release title and notes can be modified.
14f4e98

Choose a tag to compare

Changelog

  • bdab027 Brew cask update for let-go version v1.9.0 (#139)
  • 7f8d720 Minimal compatibility with weavejester/medley (#157)
  • 9b7e7a1 Out-of-SSA Go lowering: lineage coalescing, dead-store elimination, const-param inlining, loop-closure capture (#142)
  • ef13bac build: consolidate generated-artifact gates into make check-generated (#162)
  • 60731cf build: coordinate the code-generation pipeline in scripts/generate.lg (#163)
  • 2457fce build: fix + install the core_compiled.lgb merge driver; add a content freshness gate (#152)
  • 6b69c99 docs(readme): document :lg reader-conditional portability convention (#132) (#161)
  • 18aed18 feat(bytecode): carry local-variable names as debug info in the bundle (#131)
  • c572516 feat(core): Comparable protocol + let-go.semver (versions, ranges, sha) (#160)
  • 779bab8 feat(core): faithful print-method dispatch (#179)
  • b27111c feat(core): hybrid ir-compile — fall back to bytecode for unlowerable defns (#191)
  • af87844 feat(core): mutable deftype fields (^:mutable / ^:unsynchronized-mutable) (#135)
  • a454199 feat(core): namespaced and :syms associative destructuring (#150)
  • 7b0d457 feat(core): upstream clojure.core fns from the malli shim (#181)
  • 2050fe8 feat(examples): revive the malli-on-let-go shim example (#172)
  • 4af8cea feat(lower-go): cross-ns IFn dispatch via cached vars (rt.CachedVarFn) (#189)
  • ef72a92 feat(lower-go): intra-namespace direct-call lowering (slice 1) (#168)
  • 9e870fb feat(lower-go): registry-driven intra-namespace direct-call lowering (slice 2) (#188)
  • fe6c6e2 feat(math): expose the math namespace as clojure.math too (#156)
  • 098f55b feat(os): add os/exec* — run a command with inherited stdio (#154)
  • de8d3ee feat(reader): don't require type-hint tags to resolve as vars (#141)
  • d57d0cd feat(reader): match :bb reader-conditional feature (opt-in) (#136)
  • 64f53fc feat(rt): 3-arg deref (blocking deref with timeout) for promises/futures (#140)
  • 64501a2 feat(rt): bytecode bundle disassembler (lgb -> round-trippable EDN) (#184)
  • cfb7654 feat(rt): compare-and-set! for atoms (#137)
  • 6db26f2 feat(rt): lazy var roots, bound?, defonce; own-ns access to private vars (#147)
  • ee129db feat(rt): pluggable host-method-dispatch seam (#138)
  • 0e4e4cd feat(rt/term): wake read-key on SIGWINCH via BEL self-pipe (#165)
  • 98a5d21 feat(semver): require-letgo (Layer 3) + npm/cargo range sugar (Layer 4) (#132) (#164)
  • de92b59 feat(source-paths): explicit -source-paths/LG_SOURCE_PATHS fully define the search path (#199)
  • fdacba3 feat(string): add clojure.string/replace-first (#153)
  • 430b72d feat(tooling): fanout-ratchet — generated-code-size gate (#171)
  • 7fcac88 feat(vm): make Protocol and deftype/reify instances metadata-aware (IMeta) (#187)
  • 91be848 feat(vm): set-field! primitive for in-place deftype field mutation (#133)
  • c71ba4d feat: Add io/resource with -resource-paths roots and -b binary embedding (#178)
  • 5c5f434 feat: browser interop (js/emit + LetGoHost API) (#174)
  • 664b13c feat: invokable (IFn) + derefable (IDeref) protocols (#158)
  • f593010 fix(compiler): correct lexical binding resolution (#144)
  • 1d906cd fix(core): binding must restore dynamic vars on non-local exit (#185)
  • 81dcc4f fix(core): deftype/defrecord/reify/extend-protocol macro hygiene (#151)
  • a9e35b4 fix(core): ns :require is load-only; run-tests runs each ns's tests in its home ns (#149)
  • f9037fb fix(core): thread reader metadata through defmacro so ^:private works (#180)
  • b0dd737 fix(lower-go): deterministic gensym naming so lowered Go is reproducible (#182)
  • 9dcbdc7 fix(lower-go): unbox vm.Value -> primitive at branch-edge copies (#166)
  • 79d26c8 fix(reader): fully skip non-matching reader-conditional branches (#145)
  • 8734dde fix(rt): find returns a MapEntry; pop drops the first element of a one-item seq (#148)
  • 873cb79 fix(vm): emit EDN-conformant string escapes from pr-str (#183)
  • 7930fb1 fix(vm): type dispatch — Object default, instance? on protocols, deftype fields, re-pattern (#146)
  • ab99a52 perf(timeline): perf-data branch, execution-only suite, 3 IR exec variants (#190)
  • b8c37fc perf: add timeline page and main snapshots (#173)
  • 74d4ec6 test(bench): fixed-workload program benchmark from benchmark/*.clj (#170)

v1.9.0

31 May 08:23
Immutable release. Only release title and notes can be modified.
9cb2167

Choose a tag to compare

Changelog

  • 17ad803 Add term/key-pending? non-blocking input peek (#118)
  • 0044979 Brew cask update for let-go version v1.8.0 (#74)
  • 1738270 Fix HTTP response header string rendering (#102)
  • dbb3403 Fix error output (#87)
  • a34de76 Thread doc metadata through def forms (#100)
  • 155b9b0 chore(pre-commit): bump golangci-lint to v2.12.2 to match v2 config (#93)
  • d037132 compiler/reader: namespace-qualify bare symbols in syntax-quote (#91)
  • 49dd47b docs(policy)+ci+devx: contribution policy + staleness gates + parity tooling (issue #97) (#117)
  • 3987b28 feat(bytecode): LGB v2 format with per-tag versioning and batch decode (#80)
  • 4b726d8 feat(core): graph ns (toposort, Tarjan SCC) + read-all-string + scripts/sort-defns.lg (#98)
  • 896316d feat(ir): SSA IR + Lisp-side pass pipeline (#77)
  • 8de2d04 feat(ir): band2 — variadic, tail-call, destructure, multi-arity, type-infer (with review fixes) (#94)
  • d2d75d9 feat(ir+scripts): substrate observability + small ops + IR-stress harness (#114)
  • 86e724f feat(perf): bench-ratchet system + v1.8.0 historical baseline (#119)
  • 4fc5f34 feat(rt+vm): xxh3 namespace via lginterop + .lg wrapper (#108)
  • 2154e3f feat(vm): Scope — hierarchical goroutine supervision tree (draft, depends on #120) (#123)
  • 941cbe5 feat(vm): surface Go panic origin in crash reports (#127)
  • 44d0ea4 feat(vm+rt): chunked seqs — substrate + chunk-aware map/reduce/filter/take/pmap (#109)
  • f9565e8 feat(vm+rt/async): goroutine registry + cancellable, correct core.async primitives (#120)
  • a58b323 feat/perf(ir): multi-arity closure captures + uses-cache infra + typeinfer overhaul + lower-go enhancements (#116)
  • 4c40934 feat: support .clj namespace resolution + LG_READ_CLJ env var (#129)
  • 5f7556c fix(compiler): in-ns compile-time hook must not trigger ns reload (#78)
  • f754a37 fix(ir): build/lower minor bug fix bundle (#113)
  • 60da8be fix(rt): identity short-circuit + hash fast-reject + visited-pair memoization in valueEquals (#111)
  • 987c6f5 fix(rt+resolver+lgbgen): land the missing call-site switches for #110 (#115)
  • efce979 fix(rt/term): guard syscall/js Value.Int() against undefined Atomics/SAB (#126)
  • cbc22c8 fix(scripts): atomic gofmt write via .tmp + mv; trap cleanup (#92)
  • 8d7dca2 fix(string): index-of / last-index-of return rune indices for UTF-8 safety (#89)
  • d2b7474 fix(test): make os-cwd-test hermetic — assert string, not checkout path (#121)
  • aa4bd55 fix(vm): Go-fn-call-boundary fixes + Closure as Fn interface (#112)
  • 8bac483 lginterop: compact positional exports, generics/methods/fields metadata (#85)
  • 3ed77c7 perf(bench-ratchet): default to fast jank-suite gate (bytecode + gogen_ir variants); -full for the micro-bench fleet (#125)
  • 6035aa3 perf(gogen): lazy AddLine for synthetic positions (#95)
  • 517d129 perf(rt): atomic gensym + pmapv (eager parallel map), and a design note (#124)
  • a898a39 perf(vm): lock-free Var.Deref — atomic root/curr instead of global bindingsMu (#122)
  • bc9b02c refactor(rt+resolver+lgbgen): reduce binding-add ceremony to a single drop (#110)
  • 0051e63 repl: migrate from alimpfard/line to chzyer/readline for FreeBSD support (#90)
  • ecc0584 resolver: deps.edn source path support + runtime deps-paths fn (#83)
  • ba082de runtime: enforce ns load semantics for require and qualified lookup (#81)
  • 06bd643 scripts: corpus-agnostic ir-stress harness (#96)

v1.8.0

22 May 20:55
Immutable release. Only release title and notes can be modified.
3d5af1c

Choose a tag to compare

Changelog

  • ff2ec36 Brew formula update for let-go version v2.0.2 (#31)
  • e2e5ffa Fix Homebrew formula PR merge branch (#32)
  • d733e03 Migrate Homebrew release to casks
  • 3dd9949 Some improvements to Makefile and report generator
  • 5a63816 chore(tooling): git merge driver for core_compiled.lgb
  • 5dc9ad8 ci: add prek-compatible pre-commit hooks mirroring CI
  • a43d69d examples: ys-on-let-go — run yamlscript compiled output on let-go (#53)
  • 7df8031 feat(core): add unchecked-add/-subtract/-multiply/-negate/-inc/-dec/-divide-int for Clojure parity
  • de06636 feat(gogen): Clojure-to-Go AST codegen library
  • 1abc5cb feat(gogen): add func-lit, switch, composite-lit
  • 02b1b4f feat(reader): promote overflowing hex literals to BigInt — Clojure parity
  • de4668a feat(rt): unchecked-* coercion family — long/int/short/byte/char/float/double
  • fcdbdea feat(vm): warn on def shadowing clojure.core — Clojure JVM parity
  • 96bebc6 feat(vm/string): add .getBytes interop — returns UTF-8 byte-array
  • e3dcf11 feat: add check ns for property testing
  • a1824d4 feat: add lazy-seq? predicate; throw on lazy-seq of non-seq value
  • 693cd4d feat: add walk/keywordize-keys and walk/stringify-keys
  • 9ef4cc2 feat: preserve laziness via vm.Iter + SeqToSlice + reflect bridge
  • 18fc2da fix(compiler): allow multiple _ parameters in fn arg lists
  • b8d0ff2 fix(compiler): recurCompiler must count slots, not distinct names — fixes loop+shadow stack overflow
  • 1ca8567 fix(vm): warn-on-core-shadow only fires when name is referred in
  • 2c97d2e fix: COI service worker passes through server headers, uses require-corp
  • 711f2bc fix: RegisterNS auto-refers CoreNS so (in-ns 'foo) preserves core macros
  • 33ee8e7 fix: bootstrap stdlib lgb generation from source
  • fa6d96b fix: guard COI service worker against reload loops, unregister when redundant
  • 6f1f276 fix: make lgbgen output bit-deterministic
  • 8442bbc fix: make map and mapcat lazy
  • 38011c6 fix: normalize empty Sequable in lazy-seq
  • e32debd fix: support docstrings and attr-map on defmulti and defprotocol
  • 325a73b fix: walk handles maps via map-entry? predicate
  • d0c0d76 style: apply gofmt -s and golangci-lint fixes to existing files

v1.7.4

13 May 20:03
Immutable release. Only release title and notes can be modified.
941bbd0

Choose a tag to compare

Changelog

  • 941bbd0 Update sort compatibility gates

v1.7.3

13 May 19:57
Immutable release. Only release title and notes can be modified.
430d531

Choose a tag to compare

Changelog

  • d8543c4 Add -source-paths flag and LG_SOURCE_PATHS env var
  • 92fe5e2 Add JVM compatibility shim plan
  • c01ee76 Add execution plan for Clojure compat work
  • 5c71688 Correct JVM compat plan: dot-method dispatch already exists
  • 1120fcb Fix ineffectual ch assignments in readMeta
  • 430d531 Fix sort comparator compatibility
  • 9a033b1 Fix typo in README
  • af894a3 Improve real-world Clojure source compatibility
  • 75fbcb6 Pre-flight cleanups for Clojure compat (P1-P5)
  • 137b6d0 Refactor benchmarks and README for clarity and performance
  • 1598930 Unskip clojure-test-suite files: ancestors, parents, add_watch, remove_watch
  • 5a6b933 Update Homebrew formula to v1.7.2
  • f448204 Update benchmark results: add gloab/glojure back
  • a15aae9 Update website

v1.7.2

07 May 14:21
Immutable release. Only release title and notes can be modified.
46ce159

Choose a tag to compare

Changelog

  • dd53ddb Add go-joker support to benchmark scripts and documentation
  • 8359258 Add plan9 port and release pipeline
  • 46ce159 Strip ANSI escapes on plan9
  • 9b1d56b Untrack CLAUDE.md and committed .DS_Store files
  • 5abb6f6 Update Homebrew formula to v1.7.1

v1.7.1

07 May 07:59
Immutable release. Only release title and notes can be modified.
cb67e77

Choose a tag to compare

Changelog

  • 361d0aa Add link to related project: introduce paserati, a pure-Go JS runtime with TypeScript support
  • cb67e77 Enhance runtime system properties: add os-name, arch, user-name, hostname, and version metadata
  • 6f5b0e0 Update Clojure compatibility section in README
  • dec88cc Update Homebrew formula to v1.7.0
  • 408d77e Update README and benchmark results: refine performance metrics and clarify binary sizes
  • eb791ba Update README: clarify with-precision functionality for BigDecimal
  • 4b7743d Update README: document lack of range queries for sorted collections
  • af1323d Update social media link: change Twitter to X in README

v1.7.0

05 May 10:34
Immutable release. Only release title and notes can be modified.
d6e648a

Choose a tag to compare

Changelog

  • d6e648a Enhance syscall support: add seccomp and AppArmor functions; implement mknod, prctl, and capset syscalls; update tests for JSON write functionality
  • a00f74c Refactor and enhance persistent data structures and their tests
  • 2c62ee3 Update Homebrew formula to v1.6.0

v1.6.0

30 Apr 14:37
Immutable release. Only release title and notes can be modified.
cbc9f7e

Choose a tag to compare

Changelog

  • 37a135d Enhance error handling in zero? function and improve metadata preservation in assoc operations
  • cbc9f7e Enhance loop and let compilers to support PersistentVector bindings
  • 25c2694 Implement transient collections: add TransientSet and enhance TransientMap with Contains and Invoke methods; introduce tap functions for debugging.
  • a8cb58d Refactor map handling to use MapEntry type for improved clarity and consistency across the codebase
  • aa901ed Update Homebrew formula to v1.5.0
  • c5e3faf spawn-async :uid/:gid/:dir opts; unix/ uses SOCK_SEQPACKET

v1.5.0

19 Apr 18:16
Immutable release. Only release title and notes can be modified.
6ffc32e

Choose a tag to compare

Changelog

  • e3a9510 Add Clojure test suite integration and symbolic value handling
  • da33b85 Add Clojure test suite workflow guide, link from CLAUDE.md
  • 18bd5d7 Add Ratio and BigDecimal types, proper numeric tower
  • fdf07b0 Add SortedMap, SortedSet, Compare types; remove stale vscode setting
  • 3054876 Add async spawn + pipe + kill primitives, cross-OS bundle, script arg fix
  • 66d5f4f Add macros for dosync and ref operations; update knownFailing for hierarchy stubs
  • 6626e70 Add missing builtins, fix comparisons and merge, fix Range.Cons
  • a4c4f1b Add number literals, missing builtins, fix 0-arity conj/dissoc
  • 1f5d307 Add portability constants, conj nil, count strings, sort nil, new builtins
  • 88be87c Add print-str, println-str, prn-str, inc', +', *', num, random-uuid, fix some-fn
  • 0eb3dc3 Add signal-notify and WaitResult.signal
  • b01fb7c Compat suite: 43 more files compile, 22 tests graduate from knownFailing
  • 8d3173b Fix Clojure compat: namespace aliases, reader, seq equality, builtins
  • f1bc14b Fix NaN/Inf arithmetic, sort compare, repeat/subvec/symbol coercion
  • bd30066 Fix builtins, graduate pop/select-keys, improve 15+ tests
  • 01ad307 Fix empty?, sort, parse-long/double, conj map+map, int/byte/short/char coercion
  • 7ed46d6 Fix integer? for BigInt, fix mod with negative BigInt operands
  • 4a988aa Fix reader conditional comments, negative hex, test isolation
  • bfec08a Fix same-type seq equality, hash-set equality, get-in, nthrest, shuffle
  • 14d2c84 Fix variadic tail call bug, add more builtins
  • 020fca0 Implement Unix namespace with socket primitives and add pty support for Linux
  • da13889 Implement deftype and deftype-instance; enhance error handling and compatibility tests
  • 760d297 Refactor resolver paths, enhance nil checks in lang.go, and implement syscall type mappings for Linux
  • 6ffc32e Regenerate precompiled core for v1.5.0
  • bb46c60 Resolver .cljc + underscore support, compare vectors, conj/update nil, contains? vectors
  • a3c07eb Skip unreadable reader conditional branches, fix negative hex literals
  • 1108a20 update Homebrew formula for v1.4.0