0xMiden / 0xMiden/miden-vm

Simplify structure of basic block nodes

Open
#2,109 3 comments 0 reactions 0 assignees View on GitHub
core processor
Dominant language
Rust
Stars
772
Forks
352
Avg merge
1d 12h
Merged PRs (30d)
93

Description

Once we get rid of the slow processor, we should be able to refactor our basic block nodes to look something like this:
```rust
pub struct BasicBlockNode {
/// operations here would contain Respan operations to mark boundaries of operation batches
ops: Vec,
digest: Word,
}
```
This structure has a number of benefits:

- The fast processor would need just a single loop to iterate over all operations in a basic block.
- We would allocate only a single vector per basic block vs. allocating a vector (plus several arrays) per operation batch.
- Fast (but trusted) serialization/deserialization of the basic block becomes trivial.

I would create a couple of complications though:
- Computing the hash of the node would be a bit more complicated, and this would make the slow (but untrusted) deserialization more difficult.
- Trace generation would require more work because trace builders would need to build the `OpBatch` structs themselves.

Both of these are acceptable tradeoffs in my opinion.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.