CHANGELOG.md raw

Moxie Changelog

Versions are tagged with vX.Y.Z and capture user-visible changes — compiler features, language rules, runtime additions, and fixes that change observable behaviour. Point-releases under the same minor typically group related work; the headline of each entry matches the tag's commit subject.

v1.2.19

a182665..96e2ab4) caused stack overflows in the recursive mark phase on large heap graphs. Leaking GC is correct for short-lived WASM modules with explicit cleanup paths. NeedsStackObjects disabled, __heap_base / __data_end exports removed, stack size override removed.

arch-specific wrapper functions (trap_arch, moxie_longjmp_arch).

pointer on function entry.

with swapStackChain support.

correctly for non-zero pid returns.

of stuck spawn channels.

conservative GC's LTO preservation requirements.

timeout), WASM GC column updated.

v1.2.1

end-to-end. Four-stage fix: 1. splitConstBlocks cascade-demotes const specs that depend on already-demoted []byte vars (fixed crc32 + similar patterns). 2. New RewriteAddToPipe AST pass converts + to | in non-main packages so dnsmessage-style s := "a" + "b" + "c" on []byte vars typechecks. 3. patch-gotypes.go patch 12: matchTypes.mayConvert allows untyped-string ↔ []byte conversion. 4. patch-gotypes.go patch 7 widened: | accepted when either operand is a slice or a string (covers []byte(lit | var) where the constant path converts the literal to typed String). 5. CheckPlusOnText and FindPipeConcat now handle []byte(...) wraps correctly — skip pure-literal chains (Go folds them); descend into mixed chains (rewrite to __moxie_concat).

shim entries; CLAUDE.md WASM directive narrowed (native targets remain first-class).

v1.2.0

crypto/schnorr, base58) so downstream projects stop carrying the BIP340/secp256k1 implementation.

bridge for js/wasm and a pure-Go path for native.

v1.1.4

v1.1.3

v1.1.2

const X = "a" | "b" typechecks as a constant. (Note: a four-stage interaction with splitConstBlocks, FindPipeConcat, and the patched matchTypes.mayConvert was identified and fixed in the following development cycle — native builds of stdlib packages with mixed []byte/literal | chains now work end-to-end.)

v1.1.1

error in user/main-module packages; use |. Stdlib and vendor packages still accept + syntactically (rewritten to | by the loader before the first typecheck) so pre-v1.1.1 vendored code continues to build.

v1.1.0

key material, wiped on free.

a copy() fix that lost slice lengths on same-type-reference copies.

v1.0.16

side is already drained.

extension-vs-in-page environment.

v1.0.15

v1.0.14

v1.0.13

v1.0.12

v1.0.11

v1.0.10

backend.

native compiler (moxie build) and moxiejs.

v1.0.9

doesn't alias across slice slots.

v1.0.8

v1.0.7

v1.0.6

of -1 (invalid) when an element is found.

v1.0.5

v1.0.4

results under string = []byte unification).

v1.0 and earlier

(no goroutines, no make, no new, no + on text), spawn as a builtin, moxie.Codec IPC boundary, secalloc for key material.

(117+ packages compile under Moxie restrictions), int=int32 on all targets, string=[]byte unification via patched go/types, spawn for inter-domain concurrency replacing go.