MIR 层的 move 语义正在被重写:Rust 编译器性能优化的下一站
如果你写过 Rust,应该对 move 语义不陌生。把一个非 Copy 类型的值赋给另一个变量,原来的变量就不再可用——这是 Rust 所有权模型的基础规则。但你可能没想过,编译器在底层处理 move
阅读全文如果你写过 Rust,应该对 move 语义不陌生。把一个非 Copy 类型的值赋给另一个变量,原来的变量就不再可用——这是 Rust 所有权模型的基础规则。但你可能没想过,编译器在底层处理 move
阅读全文Rust 的类型系统一直以"严格但可靠"著称,但如果你写过复杂的泛型代码,多半遇到过 trait 解析失败时编译器给出一段让人摸不着头脑的错误信息,或者明明语义上应该能通过的代码,编译器却拒绝接受。这
阅读全文Bun 这个 JavaScript 运行时过去一直用 Zig 写。今年 7 月,他们宣布完成了整个代码库向 Rust 的迁移——535,000 行 Zig 代码、1,448 个 .zig 文件全部转为
阅读全文你的 Rust 项目升级了编译器版本,一切看起来正常——debug 模式跑测试全部通过,CI 全绿。但你隐约觉得 release 构建的行为有点不对劲:某个循环少跑了几次,或者某些条件分支没有被执行。
阅读全文在 Rust 里写模式匹配,你大概率碰到过这个场景:需要根据某个条件进一步筛选 match 里的一个分支。一直以来 match 的 guard 只接受布尔表达式,所以想对绑定值做额外的模式匹配,只能手
阅读全文除非过去半年完全没关注密码学新闻,不然你应该已经注意到:NIST 在 2024 年定下来的三个后量子密码标准(ML-KEM、ML-DSA、SLH-DSA),正在从纸面规格变成真实的生产流量。2026
阅读全文❝crates.io 最近上线了 crate 源码在线浏览功能——每个包页面多了一个"Code"标签,点进去就能看到完整文件树、语法高亮代码,甚至支持 #L10-L20 这种行号链接。这个功能本身很有
阅读全文如果你写过 Rust 的 attribute proc macro,可能碰到过一个有点反直觉的限制:一个声明为 #[proc_macro_attribute] 的宏,在没有参数的情况下,无法直接用在
阅读全文如果你的团队正在 Rust 里做 AI 推理,或者考虑在 Rust 里训练模型,第一步往往会去翻 PyTorch 能不能嵌入 Rust、ONNX Runtime 的 Rust 绑定好不好用、或者有没有
阅读全文Rust 1.97 在七月九号发布了。在这之前,很多开发者已经把目光放在了几个大特性上 —— dead_code_pub_in_binary lint、pin! 的 unsoundness 修复、整数
阅读全文Rust 1.97 在 7 月 9 日发布,从变更列表看,有个修复很容易被当成细节改动一带而过:阻止 pin!() 宏中的 Deref 强制转换(PR #153457)。但这个"细节"实际上修复了一个
阅读全文在 Rust 项目的 CI 配置里,RUSTFLAGS="-D warnings" 几乎成了标配。它的逻辑很直接:把警告当成错误,确保代码库保持干净。但这个用法其实是 hack,不是 Cargo 设计
阅读全文Rust 1.97.0 在 7 月 9 日正式发布,其中一个变更值得每个 Rust 开发者停下来看一眼:v0 符号命名方案已经成为唯一的默认选项,旧版命名被彻底移除。这个变化不像新语法特性那样显眼,但
阅读全文当开发者想让 LLM 调用外部工具时,需要向模型提供工具的定义——通常是一份 JSON Schema,描述函数的名称、参数类型和约束。这个过程在 Python 生态中有成熟的方案:Pydantic 模
阅读全文如果你写过中等规模的 Rust 项目,一定见过这样的代码:一个结构体有七八个字段,其中大部分可以用 Default::default() 初始化,但总有一两个字段需要特定的初始值。于是要么写一个手动的
阅读全文在 Rust 1.96.0 的更新列表中,有一项改动看起来不起眼,却触及了 Rust 宏系统与条件编译机制之间一个长期存在的缝隙:**允许将 expr 元变量传递给 cfg!()**。如果你写过复杂的
阅读全文如果你写过 Rust,大概率遇到过这样一个场景:定义一个结构体来存储区间信息,结构体想实现 Copy,但 Range<usize> 却不是 Copy 的。#[derive(Clone, Copy)]s
阅读全文2026 年 6 月 30 日,Rust 团队发布了 1.96.1 点版本。这个版本同时修复了三个层面的问题:libssh2 的安全漏洞、Cargo HTTP 客户端的可靠性缺陷,以及一个 MIR 优
阅读全文任何一个写过递归算法的开发者,都曾被栈溢出困扰过。编译器承诺会做尾调用优化(Tail Call Optimization, TCO),但它的实现从来不是一项保证——优化器今天做、明天可能不做,换个架构
阅读全文如果你是 Rust 开发者,大概率在 CI 里见过这行命令:cargo +nightly miri test。Miri,Rust 的 MIR 解释器,能在不真正编译运行的情况下模拟执行代码,检测各式各
阅读全文上周,一个标记为"非常基础"的 PR 合入了 Rust 主线:Add very basic "comptime" fn implementation。这行提交信息的背后,是 Rust 编译器团队已经推
阅读全文Git 的底层实现一直是个「只可远观」的庞然大物——二十年间由上千名贡献者以 C 语言渐进式堆叠而成,测试套件超过 42000 项。现在,有人用 Rust 把它从零重写了一遍,而且整个过程大部分由 A
阅读全文创建 Vec 的方式有很多种:vec![] 宏、从迭代器 collect、反复 push。但有一个场景,长期以来只能用拼凑的方式解决——生成一个固定长度的 Vec,其中每个元素由下标决定。现在,Vec
阅读全文如果你在 crates.io 上发布过 Rust crate,那么你的文档很可能托管在 docs.rs 上。2026 年 5 月起,docs.rs 调整了一项持续多年的默认行为——从为 5 个目标平台
阅读全文如果你维护过一个 Rust 项目,大概率被问过这样一个问题:"Rust 的所有权系统真的值得学吗?用 C 加 Sanitizer 不也一样?"在过去的十年里,这个问题的答案一直停留在"更安全"和"足够
阅读全文2026 年 6 月 2 日,gRPC 官方团队发布了 gRPC-Rust 的正式路线图,明确了从客户端预览走向生产就绪的关键节点。这是继 5 月 Tonic 正式加入 CNCF gRPC 项目之后,
阅读全文维护一个像 Rust 编译器这样的大型项目,一个经常被低估的挑战是:如何管理那些依赖编译器内部 API、但又独立发展的子项目。Miri(未定义行为检测工具)、rust-analyzer(语言服务器)、
阅读全文hyper 是 Rust HTTP 生态中承上启下的核心层:上层是 Axum、reqwest、Tower 这些开发者直接接触的框架与工具,下层是 Tokio 这类异步运行时。理解了 hyper 的用户
阅读全文如果你在过去一年关注过 Rust 生态中的"系统库重写"趋势,大概率知道 Trifecta Tech Foundation 的名字。这个非营利组织先后用 Rust 重写了 zlib(zlib-rs)和
阅读全文写 Rust 代码时,你从什么时候开始知道自己的代码有问题的?是在 cargo check 的输出里,还是在 IDE 的红色波浪线出现的瞬间?这两个时间点的差距,就是 rust-analyzer 和
阅读全文