#llvm #wrapper #safe

llvm_quick

LLVM 的 Rust 包装器

7 个版本

181.0.0-alpha.72024年7月7日
181.0.0-alpha.52024年7月6日
181.0.0-alpha.42024年7月5日
181.0.0-alpha.22024年7月4日

#79 in FFI

Download history 406/week @ 2024-07-01 56/week @ 2024-07-08 2/week @ 2024-07-22

464 每月下载量

Apache-2.0

330KB
10K SLoC

llvm_quick

中文

基于 llvm-sys 的 Rust 包装器。

示例

let context = Context::create();
let module = context.create_module(c"sum");
let builder = context.create_builder();

let i64_type = context.i64_type();
let function_type = i64_type.fun((i64_type, i64_type, i64_type));

let function = module.add_function(c"sum", function_type);

let bb = context.append_basic_block(function, c"entry");

builder.position_at_end(bb);

let (x, y, z) = function.get_params();

let sum = builder.add(x, y, c"sum.1");
let sum = builder.add(sum, z, c"sum.2");

builder.return_value(sum);

特点

包装器旨在尽可能薄和快,主要是将 C 风格的 API 作为关联方法包装。

当 API 无法安全地使其安全时,尽可能使只读访问安全,并将写函数标记为不安全的。

反馈和建议

如果您在 API 中发现任何潜在的不安全,或有关于抽象的建议,请提交一个 issue。

注意:此库仅仅是 llvm-sys 的包装器,不涉及链接 LLVM。如果您在链接 llvm 时遇到困难,请前往 gitlab llvm-sys 获取帮助。注意:此库仅仅是 llvm-sys 的包装器,不涉及链接 LLVM。如果您在链接时遇到困难,请前往 gitlab llvm-sys 获取帮助。

依赖关系

~280–560KB
~11K SLoC