本期检索说明

先读取 content/collections/deep-radar 截至 2026-09-09 的全部原文链接,并按 URL、标题与技术问题语义去重。最近 24 小时内只有 rustc 空约束构造修复同时具备源码、机制与完整 rustc-perf;为达到至少两篇的质量要求,检索窗口回溯至最近 7 天,补入 RISC-V C2 无符号向量归约和 borrow checker 数据流 seek 缓存。三项修改截稿时都尚未合入,本文只报告公开 patch、评审记录与 benchmark,不把实验性实现写成稳定能力。

Kotlin、Zig 与 Linux 本周期没有发现同时满足实测数据、源码或汇编证据、原理剖析和工程迁移价值且未被历史报告收录的新材料,因此不以发布说明或浅层文章补位。

主题 原始发布日期 一手来源与交叉验证 截稿状态 推荐强度
Rustc 空约束无分配构造 2026-09-09 20:29(中原标准时间) rustc PR #162531 / 原回归 PR #161306 / 两次 rustc-perf Draft,未合入 推荐
Borrowck 数据流 seek 缓存 2026-09-08 09:37(中原标准时间) rustc PR #162450 / 源码 diff / rustc-perf Open,未合入 必读
RISC-V C2 无符号向量归约 2026-09-07 15:28(中原标准时间) OpenJDK PR #32724 / JBS JDK-8391895 / Webrev / PrintAssembly / JMH Draft,未合入 必读

01 · Rust:空集合不是免费的,除非构造路径也是空的

原文与日期: xmakro,2026-09-09 20:29(中原标准时间);rust-lang/rust PR #162531、引入回归的 PR #161306修复后的 rustc-perf 对比

为什么值得读: And::new([]) 的结果只是空约束,但通用构造器仍会创建 IndexSet、执行去重并收集为 boxed slice。类型层面“空”不等于执行路径“零成本”。这个案例把一次仅约 0.2% 的编译器回归追到一个极小、却处在稳定热路径上的构造差异,展示了怎样用前后两次生态 benchmark 验证根因。

核心技术结论: 原改动让常见的 SolverRegionConstraintStorage 从无分配占位变为 RegionConstraint { and: Box([]), or: Box([Box([])]) }。其中 And::new([]) 会经过通用 IntoIterator → IndexSet → collect;patch 增加语义明确的 And::new_true(),直接返回 Self(Box::new([])),并把 Or::new_true()RegionConstraint::new_true/new_false 等空分支切到这条路径。

Rust
pub fn new_true() -> Self {
    Self(Box::new([]))
}

pub fn new(i: impl IntoIterator<Item = LeafRegionConstraint<I, S>>) -> Self {
    let mut seen = IndexSet::new();
    And(i.into_iter().filter(|c| seen.insert(c.clone())).collect())
}

这不是把通用构造器整体特判化,而是为代数恒等元提供专用构造入口。其工程含义是:当 true、空集合、空 conjunction 在热路径上有高频语义时,应让 API 能直接表达恒等元,避免调用者依赖编译器跨容器构造消除分配。

最有价值的实验、源码与 benchmark 细节: 引入该表示的 PR #161306 在 57 个主样本上出现平均 +0.2% 指令回归,范围 +0.1%+0.5%,没有主样本改善;本 patch 在 21 个主样本上平均改善 0.2%,范围 0.1%0.8%,且没有显著指令回退,方向与幅度基本闭合。修复后的 Max RSS 在六个显著主样本中同时出现最高 +5.0% 回退和 -5.2% 改善,汇总为 0.0%;cycles 主样本汇总近似不变,bootstrap 从 480.775s 变为 481.555s+0.16%),产物仅增 0.02%。因此可确认的是指令热路径恢复,而不是宣称所有墙钟和内存指标同步改善。

适合的工程师背景: 熟悉 Rust 容器、trait solver/region constraint 表示,或正在为编译器、查询引擎、符号系统设计高频恒等元对象的工程师。

预计阅读收益: 约 30–45 分钟;能迁移一套小回归排查方法:先用稳定计数器确认全局偏移,再对对象构造路径做分配审计,最后用专用恒等元 API 收窄修复范围。

02 · Rust:缓存 borrowck 的块级数据流状态,而不是反复移动游标

原文与日期: jackh726,2026-09-08 09:37(中原标准时间);rust-lang/rust PR #162450rustc-perf 对比

为什么值得读: borrow checker liveness tracing 会针对同一个 basic block、不同 MovePathIndex 多次询问 terminator 前或退出后的初始化状态。旧实现每次都让 ResultsCursor seek 到相同位置;patch 把与 block 相关的完整 bitset 状态缓存一次,再在其中查询多个 move path。这是典型的“缓存昂贵状态转换,不缓存最终布尔答案”。

核心技术结论: 新增两张以 BasicBlock 为索引的缓存,分别保存 terminator 与 exit 状态:

Rust
term_states: IndexVec<BasicBlock, Option<MaybeReachable<MixedBitSet<MovePathIndex>>>>,
exit_states: IndexVec<BasicBlock, Option<MaybeReachable<MixedBitSet<MovePathIndex>>>>,

let state = states.get_or_insert_with(block, || {
    seek(flow_inits);
    flow_inits.get().clone()
});

命中后先查目标 mpi,再沿 move-path 父链判断父路径是否初始化。缓存键选择 basic block,而不是 (block, mpi):一次 clone 的 bitset 能服务该块内所有路径查询,避免把缓存变成大量布尔碎片。terminator 前和 effect 后的语义不同,因此必须分成 term_statesexit_states,不能只按 block 合并。

最有价值的实验、源码与 benchmark 细节: rustc-perf 在 9 个主样本上测得指令数平均改善 3.1%,范围 0.2%–5.7%,没有显著主样本回退;10 个次样本平均改善 4.1%。主样本 cycles 汇总改善 1.4%,bootstrap 从 482.327s 降到 479.101s-0.67%),artifact size 不变。Max RSS 主样本汇总改善 0.4%,但仍有一个样本回退 0.5%;cycles 也存在一个主样本 +0.4%、一个次样本 +3.7% 的回退,说明复制并持有块级 bitset 的收益取决于同一块被重复查询的次数。

适合的工程师背景: 熟悉 MIR、borrow checker、数据流分析游标,或在静态分析器中处理块级状态和大量点查询的工程师。

预计阅读收益: 约 40–55 分钟;可学到如何按状态转换边界设计缓存键、怎样拆分前后 effect 缓存,以及为何完整状态快照有时比 memoize 单个查询结果更省。

03 · OpenJDK:让 RISC-V C2 直接发射无符号向量归约

原文与日期: zifeihan 与 Dingli Zhang,2026-09-07 15:28(中原标准时间);openjdk/jdk PR #32724JBS JDK-8391895Webrev 00

为什么值得读: Vector API 已能产生 UMinReductionVUMaxReductionV IR 节点,但 RISC-V C2 backend 没有 matcher rule,最终退回 VectorSupport.reductionCoerced Java static call。patch 同时补齐 byte/short/int/long、masked/unmasked 八类匹配路径,并展示从对象物化与静态调用到原生 RVV reduction 的完整汇编差异。

核心技术结论: reduce_integral_v 在现有 signed min/max 分支旁新增 Op_UMinReductionV → vredminu_vsOp_UMaxReductionV → vredmaxu_vs;AD 文件则按 int-like 与 long、masked 与 unmasked 分成匹配规则。归约初值必须符合无符号恒等元:minimum 以全 1(0xffffffff0xffffffffffffffff)开始,maximum 以 0 开始;masked 形式通过 v0.t 只纳入有效 lane。

ASM
; 之前:物化向量并进入 Java fallback
vse32.v  v1,(t2)
jal      VectorSupport.reductionCoerced

; 之后:无符号最小值直接归约
li          t2,-1
vmv.s.x     v2,t2
vredminu.vs v2,v1,v2
vmv.x.s     a0,v2

最有价值的实验、源码、benchmark 与汇编细节: SG2044 上的 VectorUMinUMaxReductionBenchmark 覆盖 16 组 byte/short/int/long 与 mask 组合。吞吐提升最低为 byte unsigned min 的 33.46×,最高为 masked int unsigned max 的 44.11×;long masked min/max 分别为 41.74×43.72×。这一级差异不是单条指令 latency 微调,而是消除了 Java fallback、临时 vector payload 和静态调用。PrintAssembly 还逐项确认未遮罩形式出现 vredminu.vs/vredmaxu.vs,遮罩形式带 v0.t,把“benchmark 变快”与“目标节点确实被 backend 匹配”连接起来。

适合的工程师背景: 熟悉 C2 Ideal 节点、HotSpot AD matcher、Vector API 或 RVV 指令集,正在补齐新架构 backend intrinsic coverage 的 JVM 工程师。

预计阅读收益: 约 50–70 分钟;能获得一套 backend bring-up 检查表:确认 IR 已存在、定位 matcher 空洞、为数据宽度和 mask 分组、选择正确归约恒等元,再用 PrintAssembly 与矩阵化 JMH 双重验收。

中国大陆 ToC 硬件价格观察

数据口径

窗口为 2026-08-12 至 2026-09-10,单位人民币。六类硬件继续固定同一 SKU,避免用型号切换制造趋势。本期 GPU、HDD、SSD 的公开比价页获得 9 月 10 日可复核报价;CPU 与 DRAM 最后有效点为 9 月 9 日,主板为 9 月 8 日,未把旧值复制成今日采样。折线只连接真实观测,密集横盘仅标注首末关键价格,日期斜排,点和标签均限制在面板内部。

中国大陆六类 PC 硬件公开价格事件

类别 固定样本与最新可复核价 30 日窗口内真实走势 建议
CPU Ryzen 7 9800X3D,最后可核验 9/9 ¥2,449 8/21 ¥2,609 → 9/9 ¥2,449,窗口内 -6.13%;9/9 单日下降 ¥140 可关注入手;已创窗口新低,但今天无新增确认点,下单前核对盒装/散片与保修
GPU MSI RTX 5070 VENTUS 3X 12G,9/10 ¥4,464.34 8/29 至 9/10 五个真实点均为 ¥4,464.34 继续观望;固定样本横盘,且聚合低价与中国区厂商指导价差异大,渠道风险高于短线波动
主板 ASUS TUF B850M-PLUS WIFI7,最后可核验 9/8 ¥1,299 8/31 ¥1,449 → 9/2–9/8 ¥1,299,下降 10.35% 后横盘 可入手;已完成一次台阶式下降,但今天无新点,结算前复核 WIFI7 规格与店铺
DRAM Kingston FURY Beast DDR5-6000 32GB,最后可核验 9/9 ¥3,900 9/2 ¥3,900,9/5 短暂到 ¥3,860,随后回到 ¥3,900 刚需小量买;真实点没有形成持续下跌,近期内存价格信号仍偏强
HDD IronWolf Pro 8TB ST8000NE001,9/10 ¥1,849 9/1 至 9/10 五个真实点均为 ¥1,849 按容量刚需购买;固定样本横盘,优先比较盘体来源、五年保修和数据恢复服务
SSD ZHITAI Ti600 2TB,9/10 页面最低 ¥749 9/2 ¥1,919 → 9/5–9/10 ¥749;同页京东报价仍显著更高 谨慎核验后入手;低价长期来自特定聚合渠道,不能把 61% 表面跌幅解释为全市场崩价

价格来源: 9800X3DMSI RTX 5070 VENTUS 3XASUS TUF B850M-PLUS WIFI7Kingston FURY DDR5-6000 32GBIronWolf Pro 8TBZHITAI Ti600 2TB。GPU 的供需风险另参考 2026-07-27 的中国区 RTX 50 系列渠道调价记录

判断依据

建议以固定 SKU 的真实报价事件为主,不把一次促销或不同渠道的最低价外推为整个品类。GPU 连续五点不动,但 7 月底中国区渠道调价显示显存与供货成本仍可能推高官方零售端,因此不把聚合横盘等同于下跌预期;SSD 的 ¥749 与同页京东价差过大,先验证型号、容量、颗粒和保修比追逐曲线更重要。没有当日可核验点的 CPU、主板、DRAM 明确保留最后观测日期。

其它你可能关心的

本期结论

三篇材料分别处理了三个层级的“抽象成本泄漏”:空约束仍走通用去重容器、同一 basic block 反复移动数据流游标、已经存在的向量 IR 因 backend matcher 缺口退回 Java 调用。共同的方法不是笼统换数据结构或开启优化,而是找到抽象边界上重复发生的具体工作,再用 instructions、状态缓存或目标汇编验证是否真正消失。硬件部分三类新增 9 月 10 日真实采样,另外三类明确停留在最后可核验日期。