Rust 1.99.0 发布:C 变参函数稳定,裸指针布局信息补齐
来源: blog.rust-lang.org
概述
Rust 1.99.0 发布,最重要的变化是稳定了用 Rust 定义 C-ABI 变参函数的能力,此前 Rust 只能调用别处定义的变参函数。此外还稳定了裸指针的尺寸与对齐查询,并更新了 Box::leak 的文档,建议不要再走泄漏后回收的老路。
核心要点
- 稳定定义 "C" 与 "C-unwind" ABI 的变参函数,用 ... 接受任意数量参数。
- 变参类型为 VaList,与各目标平台的 C va_list ABI 兼容,可读取的类型由 VaArgSafe trait 约束。
- 同时稳定非 "C" ABI 的裸变参函数定义,但这类函数必须用内联汇编书写。
- 稳定 Layout::for_value_raw、mem::size_of_val_raw、mem::align_of_val_raw,为非 Sized 裸指针取得尺寸与对齐。
- Box::leak 文档改为反对泄漏后再回收的用法,因为它会与当前及未来的编译器优化冲突,在自定义分配器稳定后问题更严重。
- 其余稳定项还包括 Vec::into_parts/from_parts、VecDeque::retain_back、String::from_utf8_lossy_owned、std::fs::set_times 等。
金句
应当优先使用 Box::into_non_null。
👍 0
👎 0
← 返回 Lobsters 首页