#fluence #air #programming-language #wasm #merge

air-trace-handler

AIR 跟踪处理器的实现

17 个不稳定版本 (3 个破坏性版本)

0.5.12 2024年2月22日
0.5.8 2023年12月12日
0.5.7 2023年10月26日
0.2.2 2023年7月17日
0.2.0 2023年3月23日

#120魔力豆

每月46次 下载
4 个crate中(通过 aquavm-air)使用

Apache-2.0

105KB
2K SLoC

AIR 跟踪处理器

该crate包含基于CRDT的合并数据算法的实现。它公开了基于访问者模式的 TraceHandler 结构体,并在 AIR 指令执行的一些特定位置调用其公共方法。内部 TraceHandler 包含多个有限状态机,每个公共方法都会进行一个或多个这些有限状态机的状态转换。以下是所有指令的状态转换序列,调用者必须遵循。

Ap 指令

TraceHandlerap 指令的预期调用序列

meet_ap_start
    -> meet_ap_end

Call 指令

TraceHandlercall 指令的预期调用序列

meet_call_start
    -> meet_call_end

Par 指令

TraceHandlerpar 指令的预期调用序列

meet_par_start
    -> meet_par_subgraph_end(..., SubgraphType::Left)
    -> meet_par_subgraph_end(..., SubgraphType::Right)

Fold 指令

TraceHandlerfold 指令的预期调用序列

meet_fold_start.1 ->
    meet_generation_start.N ->
        meet_next.M ->
        meet_prev.M ->
    meet_generation_end.N ->
meet_fold_end.1

其中 .T 表示这个函数应该被调用 T 次。

依赖项

~14–29MB
~449K SLoC