3 个版本
新 0.1.2 | 2024年8月11日 |
---|---|
0.1.1 | 2024年2月17日 |
0.1.0 | 2023年12月15日 |
#698 在 硬件支持
每月40 次下载
22KB
381 代码行
multivers-runner
此crate可用于创建可移植二进制文件,该文件嵌入多个版本的执行文件,每个版本使用不同的CPU特性集。
查看 cargo multivers
,它为您完成所有工作:构建多个版本并构建嵌入它们的最终二进制文件。
它如何工作?
构建脚本解析包含从环境变量 MULTIVERS_BUILDS_DESCRIPTION_PATH
中的CPU特性依赖关系的可执行文件路径集的JSON描述文件(下面是一个示例)。然后,它生成一个包含压缩源二进制文件和压缩二进制补丁的Rust文件,用于从源代码重新生成其他二进制文件。
{
"builds": [
{
"path": "/path/to/binary-with-additional-cpu-features",
"features": [
"aes",
"avx",
"avx2",
"sse",
"sse2",
"sse3",
"sse4.1",
"sse4.2",
"ssse3",
]
},
{
"path": "/path/to/binary-source",
"features": [
"sse",
"sse2"
]
}
]
}
在运行时,函数 main
解压缩并执行与主机CPU特性匹配的版本。在Linux上,它使用 memfd_create
和 fexecve
进行内存执行。然而,在Windows上,它将版本写入临时文件并执行。
cargomultivers
此库由 cargo multivers
使用来构建嵌入多个版本的最终二进制文件。
依赖关系
~2–12MB
~124K SLoC