Split circuit evaluation in "pure execution" vs "trace generation"
- Lingua principale
- Rust
- Stelle
- 772
- Fork
- 352
- Merge medio
- 1g 12h
- PR unite (30g)
- 93
Descrizione
This is a follow-up to #2676.
The current circuit evaluation code (in `eval_circuit_impl()`) builds a `CircuitEvaluation` struct, which is then passed to the `Tracer`. The `ExecutionTracer` takes this `CircuitEvaluation` to build the `AceReplay`.
The problem with this architecture is that `CircuitEvaluation` builds wire information that is only relevant to trace generation (specifically, only used in its `fill_trace()` method). A better way would be to use a method that *only* evaluates the circuit, and let the `ExecutionTracer` build the wiring information needed for trace generation. I believe `Circuit::evaluate()` is what we want to use instead, but I'm not completely sure. In this new proposed approach, the `FastProcessor` running in "execution only" mode then wouldn't need to build wiring information that will be thrown away.
Related: https://github.com/0xMiden/miden-vm/pull/2676#discussion_r2795274380
Guida per i contributori
Apri la guida per i contributori
Valutazione
Questa issue non è ancora stata valutata.