5 个稳定版本
4.0.1 | 2022 年 10 月 19 日 |
---|---|
3.2.1 | 2021 年 8 月 4 日 |
3.2.0 | 2021 年 7 月 31 日 |
3.1.0 | 2021 年 7 月 24 日 |
3.0.1 | 2021 年 7 月 2 日 |
#316 在 Cargo 插件
74KB
1.5K SLoC
cargo-compiler-interrupts
cargo-compiler-interrupts
提供了一种无缝的方式将 编译器中断 集成到任何 Rust 软件包中。有关更多信息,请查看编译器中断的 主要仓库。
要求
- 需要 Rust 1.45.0 或更高版本和 LLVM 9 或更高版本。两者必须具有相同的 LLVM 主版本。
- 您可以通过运行
rustc -vV
和llvm-config --version
分别检查 Rust 工具链和 LLVM 工具链的 LLVM 版本。 - 强烈推荐使用 Linux 或 macOS 的 x86-64 架构。其他架构和平台尚未测试。
安装
cargo-compiler-interrupts
可以通过 cargo install
安装。
cargo install cargo-compiler-interrupts
您还可以通过使用 --path
获取仓库并安装。
git clone https://github.com/bitslab/cargo-compiler-interrupts
cargo install --path ./cargo-compiler-interrupts
安装编译器中断库。
cargo-lib-ci install
入门指南
命令
cargo-lib-ci
— 管理编译器中断库。cargo-build-ci
— 构建并集成编译器中断到软件包。cargo-run-ci
— 运行集成的二进制文件。您可以通过传递--bin <BINARY>
指定要运行的二进制文件。
cargo-lib-ci install # install the CI library
cargo-build-ci # build and integrate CI to the binary
cargo-run-ci # run the CI-integrated binary
集成
- 首先运行
cargo-lib-ci install
安装编译器中断库。 - 在运行
cargo-build-ci
之前,将编译器中断 API 包作为你的 Rust 程序的依赖项,并注册编译器中断处理程序。编译器中断 API 通过compiler-interrupts
crate 提供。
fn interrupt_handler(ic: i64) {
println!("Compiler interrupt called with instruction count: {}", ic);
}
unsafe {
compiler_interrupts::register(1000, 1000, interrupt_handler);
}
有关更详细的使用和内部结构,请使用 --help
选项运行命令并查看 文档。
贡献
所有问题报告、功能请求、拉取请求和 GitHub 星星都受到欢迎并非常感谢。与编译器中断库相关的问题应报告给 主仓库。
作者
Quan Tran (@quanshousio)
致谢
- 我的导师 Jakob Eriksson 对这个项目的巨大支持。
- Nilanjana Basu 为实现编译器中断。
许可证
cargo-compiler-interrupts
在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。
依赖项
~13–25MB
~397K SLoC