主要观点: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!
示例中,展示了代码复用和组合的方式。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。