上升

主要观点:Ascent 是嵌入在 Rust 中的逻辑编程语言,类似 Datalog,有多种功能和示例。
关键信息:

  • 可通过CC 论文OOPSLA 论文了解更多。
  • 示例包括计算图中所有连接节点等。
  • 使用步骤:安装 Rust,创建项目,添加依赖,写代码,运行程序。
  • 特征:

    • 支持计算用户定义格的不动点。
    • 能生成并行代码,利用rayon控制并行度。
    • 具备 BYODS 特征,可让关系由自定义数据结构支持。
    • 提供ascent_run!及并行版本ascent_run_par!宏。
    • 支持分层否定和聚合,可定义自定义聚合器。
    • 允许定义宏并扩展为体项或头项。
    • ascent_source!include_source!宏用于代码复用和组合。
    • 可使用#![measure_rule_times]测量规则执行时间,#![generate_run_timeout]设置运行超时,wasm-bindgen可在 WASM 环境运行,struct声明可添加到ascent!定义中。

    重要细节:

  • 在并行 Ascent 中,列类型必须是Send + Sync
  • 在 BYODS 示例中,通过#[ds(trrel_uf)]属性指定使用特定数据结构。
  • ascent_run!示例中,可在 Ascent 程序中使用局部变量。
  • 在聚合器示例中,展示了不同聚合器的定义和使用。
  • 在宏定义示例中,说明了如何定义宏并扩展。
  • ascent_source!示例中,展示了代码复用和组合的方式。
阅读 26
0 条评论