From 64da507ef0f0eb11e6f7a1cb774df954bb3e8416 Mon Sep 17 00:00:00 2001 From: Ralf Anton Beier Date: Thu, 23 Jul 2026 22:53:05 +0200 Subject: [PATCH] =?UTF-8?q?chore(release):=20v0.42.0=20=E2=80=94=20ADR-7?= =?UTF-8?q?=20path-H=20+=20multiply-instantiated=20modules=20+=20static-PI?= =?UTF-8?q?C=20+=20same-memory=20transcoding?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ships the full ADR-7 path-H arc (address-strategy seam #359, call-lowering seam #360, multiply-instantiated modules #362/#363, static-PIC fold #365, ADR record #354) plus the extended-const fold completion (#368), the #364 safety fix (#366), and same-memory string transcoding (#367). New capabilities: multiply-instantiated module support (RFC-46 Q1, MultiMemory, SR-55), static-PIC data/element offset folding (#353), same-memory string transcoding (#361). Safety: multiply-instantiated gated to the execution- verified MultiMemory case (#364); the sync same-memory cross-encoding miscompile closed (#360/#361). Falsification statements in CHANGELOG. Co-Authored-By: Claude Opus 4.8 (1M context) --- CHANGELOG.md | 43 ++++++++++++++++++++ Cargo.lock | 4 +- Cargo.toml | 2 +- safety/requirements/safety-requirements.yaml | 1 + 4 files changed, 47 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ef60690..d985fa7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,49 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +## [0.42.0] - 2026-07-23 + +ADR-7 path-H — the ABI/linking-strategy architecture — landed in full, plus two +new fusion capabilities and safety hardening. + +### Added +- **Multiply-instantiated module support (RFC-46 Q1)** — a component that + instantiates the same core module more than once now fuses (under explicit + `--memory multi`) with each instance allocated independent + functions/memory/tables/globals, instead of being rejected. A pre-resolve + core-instance topology normalization turns N instantiations into N distinct + modules, reusing the merger's proven per-module index-remapping (SR-55). +- **Static-PIC data/element offset folding** — meld consumes PIC / + shared-everything inputs and statically folds a `__memory_base`-relative + segment offset (`global.get $base` and the extended-const `base + N` shape) + to a concrete `i32.const` once the base becomes a defined constant after + fusion, so the output is valid for wasmtime, not just wasm-tools (#353). +- **Same-memory string transcoding** — a mixed-encoding call under + `--memory shared` now transcodes correctly within the one shared memory, + instead of hard-failing (#361). + +### Changed +- **ADR-7 path-H architecture** — the merger's per-boundary decisions are now + pluggable seams: the address strategy (`address_strategy`, inc 1) and the + call lowering + inline decision (`adapter::call_lowering`, inc 2), each + extracted behavior-preservingly and unit-tested as a truth table (#354). + +### Fixed +- **Multiply-instantiated safety-claim gap (#364)** — support is gated to the + execution-verified `MultiMemory` case; `SharedMemory`/`Auto` reject (their + independence is unverified), so shipped behavior matches SR-31/SR-55. +- **Silent same-memory cross-encoding miscompile (#360/#361)** — the sync twin + of the async cross-encoding guard: mixed-encoding same-memory calls no longer + deliver bytes in the wrong encoding. + +**Falsification:** if a multiply-instantiated module fused under `--memory multi` +shared mutable state between instances, `multiply_instantiated_runtime` fails +(the second instance's counter would observe the first's writes); if a static-PIC +`base + N` data offset were left un-folded, `pic_extended_const_353` fails +(wasmtime rejects the fused module); if a same-memory UTF-8→UTF-16 call skipped +transcoding, `adapter_safety::test_361_same_memory_utf8_to_utf16_transcoding` +returns the wrong sum. + ## [0.41.3] - 2026-07-17 Correctness patch for the `--component` output path. diff --git a/Cargo.lock b/Cargo.lock index 08be551..bb7809b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1381,7 +1381,7 @@ checksum = "4facc753ae494aeb6e3c22f839b158aebd4f9270f55cd3c79906c45476c47ab4" [[package]] name = "meld-cli" -version = "0.41.3" +version = "0.42.0" dependencies = [ "anyhow", "clap", @@ -1396,7 +1396,7 @@ dependencies = [ [[package]] name = "meld-core" -version = "0.41.3" +version = "0.42.0" dependencies = [ "anyhow", "bitflags", diff --git a/Cargo.toml b/Cargo.toml index 78f0980..324271e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,7 +10,7 @@ exclude = [ ] [workspace.package] -version = "0.41.3" +version = "0.42.0" authors = ["PulseEngine "] edition = "2024" license = "Apache-2.0" diff --git a/safety/requirements/safety-requirements.yaml b/safety/requirements/safety-requirements.yaml index 4a6ad8e..2de7012 100644 --- a/safety/requirements/safety-requirements.yaml +++ b/safety/requirements/safety-requirements.yaml @@ -2066,6 +2066,7 @@ artifacts: reject fires instead. status: verified tags: [rfc46, adr7, merger, topology] + release: v0.42.0 links: - type: derives-from target: SYS-2