0xMiden / 0xMiden/miden-vm

Report MASM compatibility per procedure

Open
#3,817 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
772
Forks
352
Avg merge
1d 7h
Merged PRs (30d)
84

Description

The [MASM release checker](https://github.com/0xMiden/miden-vm/blob/0b43021e5a8572bb7e514a647a9efad98393d47c/scripts/check-masm-export-digests.rs#L273-L343) reports MAST root changes separately from procedure interface changes. Its felt count check also covers only Fast procedures. [Bitwalker's review](https://github.com/0xMiden/miden-vm/pull/3805#pullrequestreview-5148810713) explains that equal felt counts can hide a type change. A calling convention can also change without changing the count.

Compare the MAST root and interface together for each published procedure. The interface includes the full normalized signature and its calling convention. Record the input and output felt counts as supporting detail.

| MAST root | Interface | Result |
| --- | --- | --- |
| Unchanged | Unchanged | Pass. |
| Unchanged | Changed | Warn that source callers may need changes. |
| Changed | Unchanged | Fail because executable behavior changed. |
| Changed | Changed | Fail and report both changes together. |

Keep `--check source` strict. During the full release check, warn when only the interface changes and fail whenever the MAST root changes. Add tests for all four results.

Contributor guide

Open the contributing guide

Research direction

The MASM release checker script is at scripts/check-masm-export-digests.rs. Start by understanding the current logic for reporting MAST root and procedure interface changes. Modify the script to compare MAST root and interface per procedure, using the decision table. Add tests for the four result cases. Run the script with the --check source flag to verify strictness.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
devtools, testing-qa
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
65/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.