Skip to content

Releases: pulseengine/meld

v0.9.0

21 May 04:11
220d278

Choose a tag to compare

What's Changed

  • feat(ci): LS-N verification gate (spar-pattern port) by @avrabe in #161
  • feat(ci): Mythos delta-pass auto-runner (single-actor, OAuth-token) by @avrabe in #162
  • test(merger): add LS-A-19 regression for exact resource-import lookup by @avrabe in #163
  • fix(ci): mythos-auto plumbing — slug ordering, unzip install by @avrabe in #164
  • chore: DWARF / witness mapping discovery for fused output (sub-#130) by @avrabe in #131
  • test(dwarf): LS-CP-4 aliases + gate scans integration tests by @avrabe in #165
  • test(fact): LS-A-9 regression for callback POLL dispatch by @avrabe in #166
  • test(fact): LS-A-8 regression for inner-list rep_func selection by @avrabe in #169
  • fix(ci): drop musl target from fuzz.yml + add id-token to mythos-auto (#168) by @avrabe in #170
  • ci: skip bench/fuzz/ci on docs/safety-only changes by @avrabe in #171
  • feat(p3): cross-component stream pairing detection (#141, ADR-3) by @avrabe in #173
  • fix(ci): mythos-auto aggregate uses curl not gh; register p3_stream.rs by @avrabe in #175
  • chore: release v0.9.0 by @avrabe in #176

Full Changelog: v0.8.1...v0.9.0

v0.8.1

16 May 15:36
67873b4

Choose a tag to compare

What's Changed

  • feat(p3-async): cross-memory ptr-pair return for stackful lift by @avrabe in #150
  • feat(ci): Mythos delta-pass gate on Tier-5 file changes by @avrabe in #151
  • fix(parser): fold extended-const init/offset expressions (LS-A-11) by @avrabe in #152
  • fix(determinism): replace HashMap.iter().find with sorted-key iteration (LS-A-15) by @avrabe in #154
  • fix(resource-graph,merger): match full (iface, rn) tuple in 4 sites (LS-A-17/18/19) by @avrabe in #156
  • fix(parser): canonical ABI for flags (LS-A-20) by @avrabe in #157
  • fix(p3-async): mixed-mode stackful, type classification, stream-write over-count by @avrabe in #153
  • fix(wrap): route lift lookup via export name + propagate string encoding (LS-A-16) by @avrabe in #159
  • chore: release v0.8.1 by @avrabe in #160

Full Changelog: v0.8.0...v0.8.1

v0.8.0

14 May 05:47
v0.8.0
2e2b96f

Choose a tag to compare

What's Changed

  • docs: evaluate arXiv 2604.13693 (WarpL) for meld CI use by @avrabe in #138
  • docs: roadmap v0.8 → v0.11 + rivet SDLC artifacts by @avrabe in #145
  • feat(p3-async): stackful lifting ABI foundation (#140 phase 1) by @avrabe in #146
  • feat(p3-async): stackful lifting trampoline emitter (#140 phase 2, SR-32) by @avrabe in #147
  • fix(adapter): pad CABI alignment in async-lift retptr writeback (LS-A-10) by @avrabe in #148
  • chore: release v0.8.0 by @avrabe in #149

Full Changelog: v0.7.0...v0.8.0

v0.7.0

11 May 07:04
v0.7.0
59e76d8

Choose a tag to compare

What's Changed

  • chore(ci): add concurrency control to all workflows by @avrabe in #133
  • ci: migrate 9 of 12 workflow jobs to smithy self-hosted runners by @avrabe in #134
  • feat(core): explicit DWARF policy with Strip default (#130 phase 1.5) by @avrabe in #135
  • chore: release v0.7.0 by @avrabe in #137

Full Changelog: v0.6.0...v0.7.0

v0.6.0 — P3 async lowering complete + Mythos fix

02 May 07:17
4359d94

Choose a tag to compare

Headlines

Closes the #94 epic — P3 async support is now end-to-end functional.

Added

  • P3 async lowering pass (#120 / #129): (canon stream.*) / (canon future.*) → core-module imports against pulseengine:async. End-to-end tests for stream and future.
  • AbiError enum + typed result decoders + ADR-2 (#121 / #127). Closed numeric error codes; partial-write / EOF / waitable-set-wait semantics documented.
  • Async-export callback trampoline alignment (#122 / #128). Stable event::* / callback::* constants; canonical trampoline shape pinned.

Fixed

  • LS-A-9 (Mythos): callback::POLL was dispatched as YIELD, dropping host-ready events. Trampoline now branches on WAIT || POLL.

Pre-release Mythos pass

Tier-5 + tier-4 changed since v0.5.0: adapter/fact.rs only (+62 LOC). 1 confirmed finding (LS-A-9), fixed in this release.

Full changelog

See CHANGELOG.md.

What's Changed

  • feat: P3 async error / backpressure conventions for pulseengine:async ABI (closes #121) by @avrabe in #127
  • feat: P3 async lowering pass — canon stream/future → pulseengine:async (closes #120) by @avrabe in #129
  • feat: align async-export callback trampoline with pulseengine:async ABI (closes #122) by @avrabe in #128
  • chore: release v0.6.0 by @avrabe in #132

Full Changelog: v0.5.0...v0.6.0

v0.5.0 — P3 async foundation + criterion benches + parser robustness

29 Apr 20:43
2d8570d

Choose a tag to compare

Headlines

3 issues closed (#94 partial, #103, #118).

Added

  • P3 async lowering foundation (#94 / #124, partial). Documented pulseengine:async host-intrinsic ABI (14 verbs covering stream<T> and future<T>), detection layer in new meld-core::p3_async module, Fuser::p3_async_summary() accessor, and ADR-1. The lowering pass is tracked as #120; the v0.5.0 ABI is the stable contract follow-ups land against.
  • Criterion benchmarks (#103 / #123). meld-core/benches/fusion_benchmarks.rs ships parser / merger / resolver / end-to-end groups against the wit-bindgen test fixtures. CI Bench compile-only job verifies on every PR. Rivet TEST-BENCH-* artifacts.

Fixed

  • Parser slice OOB on truncated component-section input (#118 / #125). The Payload::ModuleSection.unchecked_range and three sibling section payloads previously panicked on &full_bytes[range.start..range.end] when input was truncated. Fix: checked_section_slice helper bounds-checks the range and returns a structured ParseError instead of slicing. Regression test + libFuzzer corpus seed shipped. LS-P-5 approved.

Pre-release Mythos pass

Tier-5 + tier-4 files changed since v0.4.0: parser.rs only. Scanned per scripts/mythos/discover.md; no confirmed findings.

One unverified hypothesis flagged for the next pass (sibling reader.range() storage sites in parse_core_module of the same class as LS-P-5; surface narrowed by the outer module bounds check at parser.rs:820). The 2026-05-20 verification routine includes a deeper Mythos sweep that will revisit.

Follow-ups filed

  • #120 — P3 async lowering pass (rewrite (canon stream.*)pulseengine:async/* imports in fused output)
  • #121 — Error and backpressure conventions for the pulseengine:async ABI
  • #122 — Async-export callback trampoline alignment with the new ABI

Full changelog

See CHANGELOG.md.

What's Changed

  • fix: parser rejects truncated component-section input cleanly (closes #118) by @avrabe in #125
  • feat: P3 async lowering — foundation + stream e2e (partial #94) by @avrabe in #124
  • feat: criterion benchmarks for fusion pipeline (closes #103) by @avrabe in #123
  • chore: release v0.5.0 by @avrabe in #126

Full Changelog: v0.4.0...v0.5.0

v0.4.0 — V&V hardening + Mythos v0.4 cleanup

29 Apr 04:08
d2668aa

Choose a tag to compare

Headlines

V&V-hardening minor release. 5 issues closed (#98, #99, #102, #104, #112).

Added

  • Kani + proptest harnesses for parser/merger/resolver (#102 / #116). Three Kani harnesses (parser no-panic on bounded inputs, model topological sort, model resolver loop) plus proptest for fusion round-trips.
  • cargo-fuzz scaffolding with 4 targets and seed corpora (#104 / #114). CI runs each target for 60 s on every PR (informational).

Fixed

  • compare_version handles pre-release suffixes per semver 2.0.0 (#98 / #113). Previously "0.2.99-rc1" sorted less than "0.2.0".
  • Resource-import fallback name-keyed (#99 / #115). build_resource_type_to_import no longer collapses multi-resource imports onto a sentinel slot; replaced with ResourceImportMap { by_type_id, by_name }.
  • Mythos v0.4 follow-up — items 4, 5, 6 (#112 / #117):
    • LS-CP-3 / SR-19: graph.adapter_sites sorted via sort_adapter_sites_for_determinism after both adapter passes; previously HashMap iteration order leaked into adapter-offset → merged-function-index, breaking byte-equal builds.
    • LS-R-10 / UCA-R-3: identify_intra_component_adapter_sites preserves from_import_module when promoting; previously import_name was copied into import_module, causing merger.rs:1500's disjunctive match to accept the wrong import for two same-name functions from different modules.
    • LS-CP-3 (second class): three caller_lower_map.iter().next() encoding fallbacks now use iter().min_by_key(|(k,_)| **k) for stability.

Pre-release Mythos pass

Tier-5 + tier-4 files changed since v0.3.0: merger.rs, resolver.rs. Both scanned per scripts/mythos/discover.md; no confirmed findings.

The cargo-fuzz scaffolding (#114) immediately surfaced a real parser panic on truncated component-section input — tracked as #118 for v0.4.1 / v0.5.

Full changelog

See CHANGELOG.md.

What's Changed

  • fix: compare_version handles pre-release suffixes (closes #98) by @avrabe in #113
  • feat: Kani + proptest harnesses for parser/merger/resolver (closes #102) by @avrabe in #116
  • feat: cargo-fuzz targets for parser/merger/resolver (closes #104) by @avrabe in #114
  • fix: key resource-import fallback by name, eliminate sentinel (closes #99) by @avrabe in #115
  • fix: Mythos v0.4 follow-up — items 4, 5, 6 (closes #112 partially) by @avrabe in #117
  • chore: release v0.4.0 by @avrabe in #119

Full Changelog: v0.3.0...v0.4.0

v0.3.0 — Trio runtime fixtures pass + Mythos pre-release fixes

28 Apr 03:59
798b4cd

Choose a tag to compare

Headlines

  • Per-component handle tables for resource definers (#108, #109). Cross-component handle hand-offs go through bridging trampolines that translate (caller_handle → caller.ht_rep → rep → callee.ht_new → callee_handle).
  • Trio runtime fixtures pass (closes #75): resource_floats, resource_with_lists, and resource-import-and-export are now runtime_test! fixtures. The 73-test wit-bindgen suite remains green.
  • --opaque-rep CLI flag for resources whose representation is treated as a u32 rather than a boxed pointer.

Mythos pre-release fixes

The pre-release Mythos delta pass surfaced two confirmed findings; both fixed in this release and documented as approved loss scenarios:

  • LS-P-4 (UCA-P-3): canonical-ABI size saturating arithmetic on nested fixed-length-list. Prevents debug-build panic and release-build wrap-to-0 → OOB write into receiver memory.
  • LS-A-8 (UCA-A-7): per-type rep_func selection for inner-list borrow<T>. Previously resource_rep_imports.values().next() (HashMap-arbitrary) routed handle A through resource B's rep_func; now resolved via the callee's resource_type_to_import map.

Six unverified Mythos suspicions deferred to v0.4 in issue #112.

Full changelog

See CHANGELOG.md.

What's Changed

  • fix(adapter): conditional pointer copy for option/result/variant types by @avrabe in #16
  • feat(safety): STPA analysis, safety requirements, and 30 new tests by @avrabe in #13
  • feat: expand wit-bindgen fixtures to 8 type families by @avrabe in #15
  • fix: multi-memory WASI import lowering and adapter type fixes by @avrabe in #20
  • test: adapter safety runtime tests for SR-12/13/15/16 by @avrabe in #21
  • fix: attestation safety hardening and resources fixture stubs by @avrabe in #22
  • Expand wit-bindgen fixtures to 14 and add multi-memory unit tests by @avrabe in #23
  • safety: STPA analysis of BA RFC #46 and cross-toolchain consistency by @avrabe in #25
  • fix: cross-toolchain ABI consistency is ecosystem-wide, not unique by @avrabe in #26
  • fix: address critical safety gaps (SR-17, SR-25, SR-31) by @avrabe in #27
  • feat(SR-25): fix resource handle translation in cross-component adapters by @avrabe in #28
  • test(#1): expand wit-bindgen fixture coverage from 14 to 45 by @avrabe in #29
  • fix: disambiguate adapter matching and populate fallback resource params by @avrabe in #30
  • fix: propagate resource type aliases in resource import map by @avrabe in #31
  • fix: resolve imported resource types in resource position lookup by @avrabe in #32
  • refactor: add ResourceBorrowTransfer and callee_defines_resource flag by @avrabe in #33
  • feat: per-component resource import tracking for 3-component borrow forwarding by @avrabe in #34
  • feat: STPA resource handle analysis and implementation plans by @avrabe in #35
  • fix(SR-33): own result conversion for 3-component chains by @avrabe in #36
  • fix(SR-32): inner resource handle fixup for borrow in list elements by @avrabe in #37
  • fix(SR-37): per-component resource types in P2 wrapper by @avrabe in #38
  • fix: resolve instance alias arguments in propagate_outer_wiring by @avrabe in #40
  • fix: per-kind index resolution in propagate_outer_wiring by @avrabe in #41
  • fix: copy ALL pointer pairs in non-retptr adapter path by @avrabe in #42
  • feat: composition DAG wiring hints for directed import resolution by @avrabe in #43
  • fix: fallback to core imports in resource type map by @avrabe in #44
  • fix: Step 4b core import scan for resource type map by @avrabe in #45
  • fix: correct callee_defines_resource for sentinel type entries by @avrabe in #46
  • fix: use first candidate in resource position fallback by @avrabe in #47
  • fix: use composition DAG to determine callee_defines_resource by @avrabe in #48
  • fix: per-component synthesis dedup + SR-33 cross-memory by @avrabe in #49
  • refactor: shared resource types per interface in P2 wrapper by @avrabe in #50
  • chore: add AGENTS.md via rivet init --agents by @avrabe in #51
  • feat: resource ownership graph (petgraph) — Phase 1 by @avrabe in #52
  • feat: resource graph Phase 2 — DAG-based callee_defines_resource by @avrabe in #53
  • feat: unified resource types + graph re-exporter detection by @avrabe in #54
  • feat: resource graph fixes, emit-import-map, and stable clippy by @avrabe in #55
  • fix: osxcar build script with per-component worlds by @avrabe in #56
  • fix: split Phase R own result transfer around post_return by @avrabe in #57
  • feat: detect and reject P3 async components (Phase 1) by @avrabe in #58
  • fix: synthesize callee resource.rep for own result transfers by @avrabe in #59
  • docs: add re-exporter detection implementation plan by @avrabe in #60
  • test: add osxcar anti-pinch integration tests by @avrabe in #61
  • feat: bump wit-bindgen to 0.54.0 for P3 sync-only support by @avrabe in #62
  • fix: use memory index for cabi_realloc$N export suffix by @avrabe in #63
  • fix: use resource_definer for graph override instead of is_reexporter by @avrabe in #64
  • feat: implement params-ptr lowering for >16 flat params by @avrabe in #65
  • fix: prevent double resource.rep for forwarded borrow params by @avrabe in #66
  • fix: correct ComponentTypeRef tag constant (0x03 not 0x04) by @avrabe in #67
  • fix: per-component resource types — all 45 fixtures pass at runtime by @avrabe in #68
  • fix(tests): use Command API for wasi:cli/run runtime tests by @avrabe in #77
  • fix: reject multiply-instantiated modules in resolver by @avrabe in #76
  • fix: prevent subtraction overflow in attestation size_reduction calc by @avrabe in #78
  • feat: per-component handle table allocation and function generation by @avrabe in #79
  • feat: route re-exporter resource imports to handle table functions by @avrabe in #80
  • fix: set caller_already_converted for re-exporter adapter chains by @avrabe in #81
  • feat(tests): update wit-bindgen fixtures to v0.54.0 with WASI version compat by @avrabe in #83
  • safety: STPA analysis of resource type dedup in 3-component chains by @avrabe in #84
  • fix: synthesize caller's resource imports for per-component type identity by @avrabe in #85
  • fix: strip $N suffix from resource name in resource tracking maps by @avrabe in #86
  • fix: restrict handle table routing to exports interface only by @avrabe in #87
  • fix: suffix duplicate exports in multi-memory mode to prevent cross-component collisions by @avrabe in #88
  • fix: export dedup + shared resource types + disable handle tables by @avrabe in #89
  • fix: remove incorrect caller_already_converted for re-exporter adapters by @avrabe in #90
  • feat: P3 async component fusion by @avrabe in #93
  • feat: callback-driving adapter for P3 async fusion by @avrabe in #95
  • fix: async adapter string params + shim routing by @avrabe in #96
  • fix: prevent resource map overwrites and remove unsafe graph upgrades by @avrabe in #91
  • fix: disambiguate import resolution by module+name (closes #97) by @avrabe in #100
  • docs: consolidate project guidance into AGENTS.md by @avrabe in #101
  • docs: memo on wasmtime FACT reusability for Christof Petig by @avrabe in #105
  • feat: per-res...
Read more

v0.1.0

02 Mar 13:19
9767abc

Choose a tag to compare

What's Changed

  • Add formal verification proofs and spec-sync tooling by @avrabe in #2
  • feat: proofs, adapters, verification, and docs alignment by @avrabe in #4
  • feat: multi-memory fusion, P2 component wrapping, and fully-closed formal proofs by @avrabe in #5
  • fix(component): replace bump allocator with indirect table pattern by @avrabe in #6
  • ci: add release workflow by @avrabe in #7
  • fix(ci): use macos-14 for x86_64-apple-darwin release build by @avrabe in #8

New Contributors

  • @avrabe made their first contribution in #2

Full Changelog: https://github.com/pulseengine/meld/commits/v0.1.0