#fluence #air #lalrpop #parser #networking

aquavm-air-parser

将字符串形式的 AIR 脚本解析为抽象语法树 (AST)

11 个版本 (5 个破坏性更新)

0.12.0 2024 年 2 月 22 日
0.11.1 2024 年 1 月 9 日
0.11.0 2023 年 12 月 12 日
0.10.0 2023 年 9 月 21 日
0.7.4 2023 年 3 月 15 日

#2441 in 魔法豆

Download history 34/week @ 2024-03-11 25/week @ 2024-03-18 36/week @ 2024-03-25 53/week @ 2024-04-01 13/week @ 2024-04-08 33/week @ 2024-04-15 25/week @ 2024-04-22 22/week @ 2024-04-29 19/week @ 2024-05-06 25/week @ 2024-05-13 29/week @ 2024-05-20 12/week @ 2024-05-27 30/week @ 2024-06-03 26/week @ 2024-06-10 12/week @ 2024-06-17 25/week @ 2024-06-24

94 每月下载量
8 个 crate 中使用 8 (直接使用 6)

Apache-2.0

705KB
19K SLoC

AquaVM

crates.io version npm version Coverage Status

AquaVM 执行编译的 Aqua,即 Aqua 中间表示 (AIR) 脚本,并在 Fluence 对等计算协议的实现中扮演着核心角色。具体来说,AquaVM 允许在脚本中表达网络编排并组合分布式、对等托管服务。此外,AquaVM 在 Fluence 网络中促进 函数可寻址性 方面发挥着重要作用,见图 1。

AquaVM & AIR model

图 1:AquaVM 和 AIR 模型示意图

由于 AquaVM 编译为 Wasm,它可以在客户端(如浏览器和 Node.js 应用)以及服务器环境中运行。

AquaVM:解释器执行模型

AquaVM的执行模型简化了Fluence协议的数据推送模型,该模型以粒子的形式实现,即由数据、AIR和某些元数据组成的智能包。在这种情况下,AquaVM可以被视为一个纯状态转换函数,它通过将先前的状态和当前状态结合起来以生成新的状态,以及在剩余的AIR工作流程中更新了同伴列表和调用请求,从而简化粒子更新。除了本地服务调用执行之外,AquaVM还处理来自远程同伴的请求,例如,作为并行执行块的一部分,以调用本地服务并处理未来的响应,见图2。

interpreter execution model

图2:AquaVM解释器执行模型

总之,AquaVM执行模型处理简单和高级组合模式(如一个或多个同伴上的(异步)并行服务执行)的拓扑跃迁。

海蓝宝石中间表示(AIR):P2P系统的IR

AIR是一种基于S-expression的低级语言,具有即将到来的二进制形式。它目前由十四条指令组成,还将有更多指令。AIR的语义受到π-演算λ-演算范畴论的启发。其语法受到Wasm Text Format(WAT)和Lisp的启发。AIR脚本控制Fluence对等网络、其同伴甚至其他(p2p)网络上的资源,例如IPFS和Filecoin,例如,通过Fluence IPFS库通过Marine适配器服务。

AIR值描述和AIR指令列表以及它们的使用示例可以在这里找到。AIR及其接口的主要属性在这里讨论这里

AIR指令的完整列表及其使用示例可以在这里找到。AquaVM接口的基本合同以及更详细交互方案可以在这里找到。

存储库结构

  • air是AquaVM的核心
  • air-interpreter是一个用于支持不同编译目标(Marine和wasm-bindgen)的crate
  • avm
    • client是AquaVM用于浏览器和Node.js目标的启动器
    • server是AquaVM用于服务器端目标的启动器
  • crates
    • air-lib包含AquaVM核心的所有主要crate
    • beautifier是AIR-beautifier的实现
    • data-store定义了一个由Fluence节点使用的DataStore特质
    • interpreter-wasm是一个用于更好地将编译的Wasm代码集成到Fluence节点中的crate
    • testing-framework是一个改进测试编写体验的框架实现
  • 工具 包含与AquaVM相关的工具

支持

如果您发现bug,请提交问题。您也可以在DiscordTelegram联系我们。我们将尽最大努力尽快解决问题。

贡献

任何感兴趣的人都可以为该项目做出贡献。请确保您阅读并遵循一些基本规则

许可证

所有软件代码均为Fluence Labs,Inc.的版权(c)所有,根据Apache-2.0许可证。

依赖项

~4–14MB
~162K SLoC