0xMiden / 0xMiden/miden-vm

Support executable MastForest generation with syscalls, externals, and dyn nodes

未关闭
#2,341 4 条评论 0 个 reaction 已指派 1 人 已被 @surajk-m 认领 在 GitHub 查看
tests
主要语言
Rust
星标
772
派生
352
平均合并
1 天 12 小时
30 天内合并 PR
93

描述

### Feature description

The MastForest Arbitrary implementation generates non-executable forests when including certain node types:

1. **Syscalls**: Generated with random procedure digests - fail to execute without matching kernel procedures
2. **External nodes**: Use random digests that don't correspond to valid procedures
3. **Dynamic nodes**: Leave junk on the stack and cannot execute properly

Currently users must set these to 0 for executable forests, limiting execution testing using this strategy.

See https://github.com/0xMiden/miden-vm/pull/2335#discussion_r2486834656
https://github.com/0xMiden/miden-vm/pull/2335#discussion_r2486842056
https://github.com/0xMiden/miden-vm/pull/2335#discussion_r2486848817

### 1. Add kernel_procedures field to MastForestParams

```rust
pub struct MastForestParams {
// ... existing fields
/// Optional procedure hashes for syscall generation
pub kernel_procedures: Option>,
}
```

When generating syscalls, randomly select from provided hashes. Could also generate a matching kernel containing the procedure hashes.

### 2. Support executable external nodes

Add `external_procedures: Option>` field or make external nodes reference existing basic blocks within the same forest.

### 3. Consider kernel generation support

Add `generate_kernel: bool` field to generate both forest AND compatible kernel, returning `(MastForest, Kernel)`.

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。