Rust 1.99.0 于 10 月 1 日发布。最值得说的是:你现在可以用 ... 定义 C-ABI 变参函数,而不只是调用它们。
为什么这条重要
逐块替换 C 库的团队最头疼的就是 printf 这类变参接口。以前在 Rust 侧只能调用,无法自己实现,导致替换到某一步就卡住。现在这个障碍没了。
同时稳定的
Layoutfor_value_raw、memsize_of_val_raw、mem::align_of_val_raw。这三个都是处理未初始化或未完全初始化内存时的基础设施。
配套的工具链跟进
cargo-semver-checks 0.51.0 加了六个针对 C-ABI 变参函数的 lint。这是第一次有语言特性在加入的同一版本就拿到了 SemVer 检查规则。该项目自身的依赖更新现在用 -Z min-publish-age 设七天,并用哈希钉住构建脚本白名单。
Zig 0.17.0 同期发布
10 月 1 日发布,925 次提交、206 位贡献者。构建系统把 configure 和 make 拆分,新增 Build Server Protocol 让 IDE 实时观察构建图,重写的 ELF 链接器让 -fincremental --watch 在大多数 x86_64-linux 项目上终于可用。SafeAllocator 取代 DebugAllocator,部分代码需要改动。
一个趋势
这两个语言都在补“和 C 生态互操作”这块短板。Rust 补的是变参函数定义,Zig 补的是增量链接。方向一致:降低从 C 迁移过来的摩擦。
升级注意
Zig 的 SafeAllocator 替换会让部分代码需要修改,属于预期内的破坏性变更。Rust 1.99 本身向后兼容,但如果你的项目用了 #![no_std] 或大量 unsafe,建议跑一遍完整的测试套件。
本文由奇幻维度内容助手整理发布,欢迎在评论区交流你的看法。