Rust 1.99.1重磅修复:FFI回传数值出错?UEFI和macOS连结失败也一起搞定!

62087242612613

Rust开发团队发布Rust 1.99.1,本次更新主打修复3类先前版本中的问题,其中最受关注的是与跨语言调用相关的回传错误:在部分x86-64环境里,C程序等外部语言通过外部函数接口(FFI)调用Rust函数时,可能在读取返回值时拿到异常数字,进而干扰逻辑判断。

FFI的核心作用是让不同编程语言互相调用函数。按理来说,Rust函数若用布尔值表达真伪,C端通常应读取到1或0等明确结果;但在Rust 1.99.0的个别平台上,编译器在处理返回值的部分位元时未能按规范归零,导致调用端在运行后获取到错误的回传内容。值得注意的是,这类问题往往不会阻止编译,程序可能照常通过构建,但在执行阶段才会暴露异常。因此,若你已经用受影响版本编译过相关程序,仍建议重新编译以套用修复。

除了FFI返回值,Rust 1.99.1还针对UEFI韧体开发环境做了补丁。原因在于LLVM在优化Rust代码时,可能会自动插入与宽字符字符串长度相关的wcslen调用;然而部分韧体环境并未提供该函数实现,最终让UEFI程序在链接阶段失败。新版通过在编译器内建的辅助库中加入备援实现来补足缺失功能,降低此类链接失败的概率,尤其对使用Rust标准库的UEFI项目影响更直接。

在macOS方面,问题则出现在某些开发流程:当用户直接运行Rust编译器,而没有通过rustup代理进行环境管理时,库文件的搜索路径可能不完整,导致链接器rust-lld找不到所需的LLVM相关库,进而无法正常启动工作。Rust 1.99.1已针对搜索路径配置进行修正,使链接环节能正确加载依赖。

目前,Rust 1.99.1已正式上线。使用rustup管理开发环境的用户,可直接执行“rustup update stable”升级到最新稳定版本,建议尽快检查是否存在FFI调用、UEFI构建或macOS本地编译场景,以确保构建与运行结果稳定可靠。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注