#api #c-ffi

bin+lib trixy

A rust crate 用于为您的应用程序生成多语言 API

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 日

#70FFI

Download history 285/week @ 2024-05-03 2/week @ 2024-05-10 215/week @ 2024-05-17 26/week @ 2024-05-24 139/week @ 2024-05-31 6/week @ 2024-06-07 3/week @ 2024-06-14 185/week @ 2024-07-05 20/week @ 2024-07-12 339/week @ 2024-07-19 85/week @ 2024-07-26 3/week @ 2024-08-02

每月 451 次下载

GPL-3.0-or-later

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