| Crates.io | air-trace-handler |
| lib.rs | air-trace-handler |
| version | 0.5.12 |
| created_at | 2023-03-15 13:21:49.298947+00 |
| updated_at | 2024-02-22 22:21:06.7076+00 |
| description | Implementation of AIR trace handler |
| homepage | |
| repository | |
| max_upload_size | |
| id | 810699 |
| size | 109,187 |
This crate contains implementation of the CRDT-based merging data algorithm. It exposes the TraceHandler struct that based on the visitor pattern and has public methods that should be called in certain places of AIR instructions execution. Internally TraceHandler contains several FSM and each of such public methods does state transitioning of one or more these FSMs. Below are state transition sequences for all instructions that caller must follow.
Expected sequence of TraceHandler calls for the ap instruction:
meet_ap_start
-> meet_ap_end
Expected sequence of TraceHandler calls for the call instruction:
meet_call_start
-> meet_call_end
Expected sequence of TraceHandler calls for the par instruction:
meet_par_start
-> meet_par_subgraph_end(..., SubgraphType::Left)
-> meet_par_subgraph_end(..., SubgraphType::Right)
Expected sequence of TraceHandler calls for the fold instruction:
meet_fold_start.1 ->
meet_generation_start.N ->
meet_next.M ->
meet_prev.M ->
meet_generation_end.N ->
meet_fold_end.1
where .T means that this function should be called exactly T times.