12 个版本 (4 个重大更改)
0.4.0 | 2024 年 7 月 25 日 |
---|---|
0.3.4 | 2024 年 7 月 23 日 |
0.2.2 | 2024 年 5 月 31 日 |
0.1.1 | 2024 年 5 月 4 日 |
0.0.0 | 2023 年 12 月 23 日 |
#70 在 FFI
每月 451 次下载
340KB
6.5K SLoC
Trixy
用于生成多语言外部函数接口的 crate。
特性
- 支持自定义类型,这些类型是从一组 原始类型 派生的。
- 支持回调,通过 C 函数指针。
- 支持错误处理,在检查函数参数(空指针等)时。
支持的语言
- c
依赖项
Trixy 只需要
clang-format
格式化生成的 C 头文件。
Trixy 语言
要生成的 API 在 Trixy 文件中指定。这些文件的语言是 Rust 的一个子集,因此应该很容易学习和掌握。
提供了一份语法文件 在此,以 扩展巴科斯-诺尔范式 编码。语法文件以 PDF 格式的铁路图在此 呈现,运行 ./docs/generate_docs
重新生成 PDF 文件。
测试
Trixy 在 ./tests
目录中包含集成测试。这些测试与 ./scripts/tests.sh
脚本一起维护。查看它的 --help
输出以获取更多信息。
此 crate 还包含一个二进制文件,可用于手动测试和检查生成的 AST。运行 cargo run --features 'build-binary' -- --help
输出应提供所有必要信息。
测试(目前)仅限于成功的情况,即它们只能测试成功的情况。未来的版本可能会支持失败的测试。
贡献
我们有一个 nix flake,它提供了与 Trixy 一起工作所需的依赖关系以及 ./scripts
目录中的相关脚本。
请确保在添加新文件后也运行 ./scripts/renew_copyright_header.sh
,以确保每个文件都包含许可证头。
依赖项
~0–1.3MB
~23K SLoC