Skip to content
当前页大纲

Rust 生态速览(2026 年 10 月) ​

Rust 学习模块的时事补充篇:把 2026 年秋天的版本动态和语言演进记录下来,帮你判断「现在学 Rust,学的版本和最新生态差多远」。事实均来自官方博客与发布页(文末附来源),更新截至 2026.10.22。

一、当前版本:1.99.1 ​

Rust 保持六周一个版本的节奏,2026 年下半年已发布:

版本日期说明
1.98.02026.08.20常规特性版
1.98.12026.09.03修复点版本
1.99.02026.10.01特性版(本文重点)
1.99.12026.10.15当前最新稳定版
bash
# 升级到最新
rustup update stable

二、1.99.0 的三大语言级亮点 ​

1. extern "C" 变参函数稳定 ​

以前 Rust 只能调用 C 的变参函数(如 printf),现在可以用 Rust 编写 C ABI 的变参函数了——... 参数配合 VaList 类型,与 C 的 va_list ABI 兼容:

rust
/// SAFETY: 调用方必须至少传入 2 个 i32
unsafe extern "C" fn sum(mut args: ...) -> i32 {
    let a = unsafe { args.next_arg::<i32>() };
    let b = unsafe { args.next_arg::<i32>() };
    a + b
}

fn foo() -> i32 {
    unsafe { sum(0i32, 2i32) }
}

意义:写操作系统内核、嵌入式引导、C 库接口时不再需要借助 C 编译器生成胶水层。VaList 上能读取哪些类型由 VaArgSafe trait 把关——依然是 Rust 式的安全边界。

2. 裸指针的布局信息 ​

三个函数稳定:Layout::for_value_raw、mem::size_of_val_raw、mem::align_of_val_raw——对**未定尺寸类型(?Sized)**的裸指针也能安全地查询大小与对齐。这对自定义容器(如胖指针、trait 对象存储)的底层实现是关键补全。

3. Box::leak 的「回收」用法被正式劝退 ​

语言语义没变,但官方文档明确建议:Box::leak 泄漏的内存不要再手动回收(round-trip unleak)。这类代码与当前和未来的编译器优化有冲突,尤其与即将稳定的 custom allocators(自定义分配器)特性冲突。需要长期持有就用 Box::into_non_null 或 Box::into_raw。

三、稳定化 API 速览 ​

API用途一句话
Vec::into_parts / Vec::from_parts拆分/重组 Vec 的指针-长度-容量三元组,零拷贝改造缓冲区的利器
Box::into_non_null / from_non_null基于 NonNull 的裸指针转换(比 into_raw 更表达「非空」语义)
String::from_utf8_lossy_owned有损转 UTF-8 且直接接管原缓冲,省一次拷贝
std::fs::set_times / set_times_nofollow设置文件时间戳(可指定不跟随符号链接)
IntoIterator for Box<[T; N]>装箱数组可直接 for 遍历
VecDeque::retain_back从尾部开始过滤

四、生态动向 ​

  • i686 Windows 目标降级(10 月 2 日):32 位 Windows 目标从 Tier 1 降为「仅 std 支持级」——32 位桌面场景持续萎缩的官方确认,新项目不必再顾虑它
  • 版本号逼近 1.100:没有 Rust 2.0 的计划,版本号会自然进位——Rust 的稳定性承诺(edition 机制)让它敢于「永远 1.x」

五、对学习者的意义 ​

对照本站 Rust 学习模块的结论:

  1. 基础语法零漂移:所有权、生命周期、trait、异步这些核心内容自 2015 年 1.0 以来语义稳定,rust1~rust23 的笔记不需要因版本更新而修改
  2. 新特性都是「边角增强」:1.99 的变参函数、裸指针布局属于 FFI 和底层库作者的武器,日常业务开发几乎无感——先学基础,新特性用到再查,这个策略完全正确
  3. 保持每 6 周一次 rustup update 的习惯即可跟上生态;clippy 随版本更新会给出更准的 lint 建议

参考来源

MIT License.