19个版本 (6个破坏性更新)

0.7.1 2023年11月17日
0.6.1 2023年7月28日
0.3.4 2023年3月23日
0.1.0 2022年7月9日

#141数据库接口

Download history 496/week @ 2024-04-25 449/week @ 2024-05-02 567/week @ 2024-05-09 538/week @ 2024-05-16 662/week @ 2024-05-23 534/week @ 2024-05-30 507/week @ 2024-06-06 683/week @ 2024-06-13 651/week @ 2024-06-20 648/week @ 2024-06-27 524/week @ 2024-07-04 856/week @ 2024-07-11 883/week @ 2024-07-18 1277/week @ 2024-07-25 668/week @ 2024-08-01 567/week @ 2024-08-08

3,578 每月下载量
用于 13 个Crate (8个直接)

Apache-2.0

4MB
136K SLoC

Rusty Object Notation 118K SLoC // 0.0% comments Rust 17K SLoC // 0.1% comments GraphQL 1.5K SLoC // 0.0% comments

Trustfall — 查询(几乎)任何事物的引擎

Trustfall是一个查询引擎,可用于查询任何类型的数据源,从API和数据库到磁盘上的任何类型的文件——甚至AI模型。

在您的浏览器中尝试Trustfall

Trustfall游乐场支持运行针对以下公共数据源的查询

例如,这个链接显示了HackerNews查询的结果:“哪些GitHub或Twitter用户正在评论关于OpenAI的故事?”

在游乐场中,Trustfall配置为作为WASM在客户端运行,在浏览器中执行查询处理的各个方面(解析、编译和执行)。虽然这个演示突出了Trustfall嵌入到目标应用程序中的能力,但当然也可以在更传统的客户端-服务器环境中使用。

10分钟技术讲座 + 演示

Trustfall被介绍在了HYTRADBOI 2022会议上的《如何查询(几乎)一切》演讲中。[链接](https://www.hytradboi.com/2022/how-to-query-almost-everything) “How to Query (Almost) Everything” talk talk at the HYTRADBOI 2022 conference.

Terminal recording of running cargo run --release -- query example_queries/actions_in_repos_with_min_10_hn_pts.ron in the demo-hytradboi demo project. The system returns the first 20 results of the query in 6.36 seconds."

演讲中演示了跨API查询的执行:“在HackerNews首页上,哪些GitHub Actions被用于得分大于等于10分的项目?”

该演示在HackerNews和GitHub API以及YAML格式的GitHub仓库工作流程文件上执行以下查询

{
  HackerNewsTop(max: 200) {
    ... on HackerNewsStory {
      hn_score: score @filter(op: ">=", value: ["$min_score"]) @output

      link {
        ... on GitHubRepository {
          repo_url: url @output

          workflows {
            workflow: name @output
            workflow_path: path @output

            jobs {
              job: name @output

              step {
                ... on GitHubActionsImportedStep {
                  step: name @output
                  action: uses @output
                }
              }
            }
          }
        }
      }
    }
  }
}

运行此演示的说明以及源代码可在此目录中找到:demo-hytradboi:[链接](https://github.com/obi1kenobi/trustfall/blob/61142441cfb7dced1664e42f1d98bf612e554b1f/trustfall/demo-hytradboi) link

使用Trustfall查询现实世界数据的示例

  • [HackerNews API](https://github.com/obi1kenobi/trustfall/blob/61142441cfb7dced1664e42f1d98bf612e554b1f/trustfall/trustfall/examples/hackernews/),包括查询语言概述和查询REST API的示例。
  • [RSS/Atom feeds](https://github.com/obi1kenobi/trustfall/blob/61142441cfb7dced1664e42f1d98bf612e554b1f/trustfall/trustfall/examples/feeds/),展示如何查询RSS/Atom等结构化数据。
  • [机场天气预报数据(METAR)](https://github.com/obi1kenobi/trustfall/blob/61142441cfb7dced1664e42f1d98bf612e554b1f/trustfall/trustfall/examples/weather),展示如何查询航空天气预报中的CSV数据。

Trustfall还驱动了语义版本控制检查器[cargo-semver-checks](https://crates.org.cn/crates/cargo-semver-checks)。更多关于Trustfall在该用例中扮演的角色详情,请参阅[这篇博客](https://predr.ag/blog/speeding-up-rust-semver-checking-by-over-2000x/)。

在新的数据源上使用Trustfall

通过实现[BasicAdapter trait](https://docs.rs/trustfall_core/latest/trustfall_core/interpreter/basic_adapter/trait.BasicAdapter.html)是连接新数据源的最简单方式。

Python绑定可用,并在引擎每次更改时自动构建;最新版本可在此[下载](https://github.com/obi1kenobi/trustfall/releases)。Python入门指南即将推出([跟踪问题](https://github.com/obi1kenobi/trustfall/issues/16));同时,Python绑定的[测试套件](https://github.com/obi1kenobi/trustfall/blob/61142441cfb7dced1664e42f1d98bf612e554b1f/trustfall/pytrustfall/trustfall/tests/test_execution.py)是最佳资源。

目录注册

  • trustfall是一个门面crate。这是使用Trustfall的首选方式。
  • trustfall_core包含查询引擎内部结构。
  • trustfall_derive定义了简化数据源插入的宏。
  • pytrustfall包含Trustfall的Python绑定。
  • trustfall_wasm是Trustfall的WASM构建。
  • trustfall_filetests_macros是一个用于生成由文件定义的测试用例的过程宏:它们确保当给定一个文件指定的输入时,被测试的函数产生的输出与另一个文件的内容等效。
  • experiments包含各种实验项目,如[Trustfall网络沙盒](https://play.predr.ag/)。

版权所有2022-至今 Predrag Gruevski。

本文件基于Apache许可证第2.0版(“许可证”);除非适用法律要求或书面同意,否则不得使用此文件,除非遵守许可证。您可以在http://www.apache.org/licenses/LICENSE2.0获取许可证副本。

除非适用法律要求或书面同意,否则在许可证下分发的软件按“原样”基础分发,不提供任何形式(明示或暗示)的保证或条件。有关许可证下权限和限制的特定语言,请参阅许可证。

当前日期由仓库中最新的提交时间戳确定。通过访问、贡献代码、评论或问题到此仓库,您同意您的所有贡献可以在原作者和/或此项目的未来维护者选择的任何条款下使用、修改、复制和/或重新分发。

依赖项

~6-8MB
~150K SLoC