Skip to content

Release v1.7.4

Latest

Choose a tag to compare

@github-actions github-actions released this 05 Aug 13:08
· 48 commits to main since this release
459a118

What's Changed

  • fix: detect duplicate free-function names before WASM/LLVM emission by @iheitlager in #2037
  • fix(wasm): Result/Option Float payloads + Float.to_string()/format() by @iheitlager in #2040
  • fix(tools): read tree-sitter grammar from its own submodule; correct IFC docs by @iheitlager in #2042
  • chore(vendor): bump both grammar submodules to current; record ctor_path divergence by @iheitlager in #2044
  • fix(wasm): Option/Result[String]::unwrap_or emits mismatched if/else shapes by @iheitlager in #2048
  • fix(wasm): fix curated playground examples (#2045, #2046, #2047) by @iheitlager in #2057
  • docs(security): add SECURITY.md; reconcile roadmap with actual issue state by @iheitlager in #2060
  • docs(security): drop a link to a repo that is still private by @iheitlager in #2061
  • fix(wasm): dispatch user-defined extension methods on custom structs by @iheitlager in #2058
  • docs: correct L4's algorithm name from Cooper's to Fourier-Motzkin by @iheitlager in #2063
  • fix(backends): key last-use tracking by binding identity, not name by @iheitlager in #2064
  • refactor(assurance): adopt case/verification/traceability/evidence vocabulary by @iheitlager in #2065
  • fix(wasm): support write/stdout/stderr/now for std.log by @iheitlager in #2070
  • fix: set MVL_NO_REEXEC=1 in examples/test-all.sh by @iheitlager in #2072
  • docs: move AGENTS.md to mvl-spec, fix a dangling cross-reference by @iheitlager in #2078
  • fix: #2023/#2052 WASM String-return UAF, #2053 stack imbalance, #2062 LLVM extension-method dispatch by @iheitlager in #2059
  • fix(lint): clear unused-function and Int zero-arg-literal-fn-as-const warnings by @iheitlager in #2082
  • fix(wasm): std.io read_file/_read_file has no import/runtime shim by @iheitlager in #2079
  • fix: five pre-existing make check-compiler failures by @iheitlager in #2080
  • feat(wasm): List higher-order functions, sort_by, and remaining parse ops (#2014) by @iheitlager in #2081
  • fix(wasm): make examples/bzip buildable and add std.env args()/get() shims by @iheitlager in #2085
  • fix(wasm): stop infinite recursion on bitwise refinement predicates by @iheitlager in #2087
  • feat(wasm): add std.env, std.io, std.time, std.random runtime by @iheitlager in #2094
  • chore(wasm): shrink runtime/wasm/ artifact with wasm-opt -Oz by @iheitlager in #2097
  • feat(wasm): design --target=wasm-browser flag by @iheitlager in #2098
  • chore: remove unused legacy std.time runtime helpers by @iheitlager in #2103
  • fix: wire std.io Path builtins on WASM and LLVM backends by @iheitlager in #2104
  • chore: release v1.7.4 by @iheitlager in #2106
  • chore: align runtime crate versions to 1.0.4 by @iheitlager in #2107
  • fix(wasm): wire std.io open()/close() to WASM emitter and runtime by @iheitlager in #2111
  • fix(wasm): String type aliases, match scrutinees, and List concat by @iheitlager in #2116
  • fix(wasm): ref String reassignment declare/emit split-brain; wire log_to_file by @iheitlager in #2120
  • fix(checker): unannotated lambda return type, Map::put/without generic inference by @iheitlager in #2126
  • fix(wasm): Fd never reaches struct_layouts, causing dangling calls by @iheitlager in #2105
  • fix(wasm): non-generic ext methods on builtin wrappers unreachable by @iheitlager in #2128
  • feat(examples): wire mastermind into make test-examples-wasm by @iheitlager in #2129
  • docs(adr): fix ADR-0031 status drift, drop stale UFCS jargon by @iheitlager in #2132
  • feat(wasm): extern "rust" FFI via embedded-wasmtime host (#2049) by @iheitlager in #2133
  • fix(wasm): Set[T]::remove and ::map have no emitter arm (#2124) by @iheitlager in #2130
  • fix(llvm): Set[T]::map does not dedupe results (#2134) by @iheitlager in #2135
  • fix(wasm): load collections.mvl into implicit prelude, fix Set HOF methods (#2131) by @iheitlager in #2136
  • fix(wasm,llvm): let x: ref List/Set[T] = deep-copies instead of aliasing by @iheitlager in #2139
  • test(stdlib): regression test for io::remove vs Map/Set::remove collision by @iheitlager in #2140
  • fix(checker): mutating collection methods require a ref receiver by @iheitlager in #2142
  • fix(checker): extend mutating-method check to field receivers by @iheitlager in #2143
  • fix(wasm): Ok(())/Some(())/char literals stub instead of lowering by @iheitlager in #2148
  • fix: Option::map/Result::map/Result::and_then have no implementation by @iheitlager in #2150
  • spike(007): standalone WASM harness for --backend=wasm output by @iheitlager in #2144
  • fix(examples): access_control test-wasm can't reach extern FFI via tools/mvlr by @iheitlager in #2151
  • fix(llvm): cross-sibling function calls can see the wrong return type by @iheitlager in #2153
  • fix(wasm): string literals/Int::to_string/Bool::to_string broken with no fn main by @iheitlager in #2155
  • chore(examples): log_analyzer lint fixes + exclude snake_game from wasm by @iheitlager in #2160
  • fix(wasm): Int/UInt/Float::abs/clamp/pow have no emitter arm (#2122) by @iheitlager in #2156
  • fix(wasm): capturing closures compile to unreachable stubs (#2118) by @iheitlager in #2157
  • fix(wasm): named function used as an fn-value has no funcref table slot (#2159) by @iheitlager in #2161
  • fix(wasm): Int::to_float()/Float::to_int() have no emitter arm at all by @iheitlager in #2165
  • fix(cli): mvl test silently drops inline test fn when a same-stem *_test.mvl sibling exists by @iheitlager in #2170
  • fix(wasm): generic Option/Result::map's own body mis-declares String bindings; Map::new() has no emitter arm by @iheitlager in #2172
  • feat(examples): log_analyzer JSON pipeline is now native MVL, no Rust bridge by @iheitlager in #2167
  • fix(wasm): nested Some(Variant(x))/Ok(Variant(x)) payload patterns fail to assemble by @iheitlager in #2178
  • fix(wasm): List[T]::sort() and String::parse_float() have no emitter arm by @iheitlager in #2176
  • fix(llvm): nested Some(Variant(x))/Ok(Variant(x)) payload patterns crash by @iheitlager in #2179
  • fix(llvm): Ok()/Some()/Err(_) sibling arm unreachable alongside a qualified variant arm by @iheitlager in #2182
  • fix(wasm): wire up String::chars() and String::char_at() emitter arms by @iheitlager in #2187
  • fix: three small backend match/type-inference bugs (#2145, #2146, #2171) by @iheitlager in #2184
  • fix(wasm): std.random.choice() emits invalid Option payload (#2093) by @iheitlager in #2185
  • fix(wasm): finish String kernel-method WASM coverage (#2123) by @iheitlager in #2188
  • fix: std.json.decode entirely broken on LLVM and WASM backends (#2169) by @iheitlager in #2189
  • fix(checker): close #2017 - sound prelude for mvl test/llvm_text/wasm_text pre-checks by @iheitlager in #2197
  • chore(examples): add smoke target to examples/programs; relocate FFI test fixtures by @iheitlager in #2196
  • fix: log_analyzer LLVM+WASM test failures (6 backend bugs, closes #2198, #2199) by @iheitlager in #2201
  • test(corpus): regression case for #2200 List.get() field-receiver bug by @iheitlager in #2202
  • fix(wasm): List/Set[T].get() UAF on String/nested-collection elements (#2203) by @iheitlager in #2208
  • fix: test-crate assembly must drop every fn main — LLVM/WASM parity by @iheitlager in #2210
  • feat(wasm): wasm-browser target — JS host reuse over bespoke bridge (#2093) by @iheitlager in #2190
  • docs(changelog): catch up 1.7.4 with ~75 issues merged since e7138e3 by @iheitlager in #2220

Full Changelog: v1.7.2...v1.7.4