Releases: nooga/let-go
Releases · nooga/let-go
v1.10.0
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
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
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
Immutable
release. Only release title and notes can be modified.
v1.7.3
Immutable
release. Only release title and notes can be modified.
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
Immutable
release. Only release title and notes can be modified.
v1.7.1
Immutable
release. Only release title and notes can be modified.
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-precisionfunctionality 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
Immutable
release. Only release title and notes can be modified.
v1.6.0
Immutable
release. Only release title and notes can be modified.
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
Immutable
release. Only release title and notes can be modified.
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