本期检索说明

先读取 content/collections/deep-radar 中截至 2026-09-02 的全部原文链接,并按 URL、标题和技术问题语义去重。最近 24 小时内最终只有两篇 Rust 一手材料同时具备实测数据、源码或汇编证据、原理解释和工程迁移价值。OpenJDK 同期的 Zicond 条件算术、G1 NUMA 分配和地址物化候选虽有源码与正确性测试,但缺少公开性能数据,未纳入精选;Kotlin、Zig、Linux 也没有满足全部硬门槛的新材料。

两项 Rust 修改都仍在公开评审中。本文分析可复核的 PR、源码差异、汇编与 rustc-perf 结果,不把它们写成已经进入稳定版的事实。

主题 原始发布日期 一手来源与交叉验证 截稿状态 推荐强度
Arc::drop 冷路径外提 2026-09-02 17:52(中原标准时间) Rust PR / RISC-V 汇编 / rustc-perf Open,未合入 必读
next-solver opaque goal 自失效消除 2026-09-02 12:49(中原标准时间) Rust PR / rust-analyzer 原始案例 / rustc-perf Draft,有上游冲突 必读

01 · Rust:让绝大多数 Arc::drop 不再穿过最后引用的慢路径

原文与日期: ruriww,2026-09-02 17:52(中原标准时间);rust-lang/rust PR #162178,性能结果见 rustc-perf 对比

为什么值得读: Arc 的最后一次释放必须执行 acquire fence、析构值并回收分配,但普通释放只需原子递减后返回。这个补丁利用已经稳定且能正确生成冷路径的 cold_path,把“引用计数恰好降到零”的分支连同 fence 外提到 drop_slow。它把语言库中的并发内存序语义、分支布局、RISC-V 机器码与编译器全量性能数据串成了一条完整证据链。

核心技术结论: 热路径不需要因为极少发生的最后引用释放而顺序经过 fence 和慢路径调用。fetch_sub(1, Release) 仍负责发布此前对共享对象的写入;只有观察到旧计数为 1 的线程才进入冷路径,并在真正读取、析构共享内容前执行 acquire fence。语义没有减少同步,只是把同步指令和慢路径代码从常见控制流中移走。

RISC-V 反汇编最直观。旧代码以“不等于 1”跳过慢路径,最后引用路径的 fence r, rw 仍内联在函数体;新代码把条件反向,非最后引用立即恢复栈并返回,最后引用才调用 Arc::drop_slow

ASM
    amoadd.d.rl a0, a1, (a0)
    li      a1, 1
-   bne     a0, a1, .LBB6_2
-   fence   r, rw
+   beq     a0, a1, .LBB6_2
+   ld      ra, 8(sp)
+   addi    sp, sp, 16
+   ret
+.LBB6_2:
    mv      a0, sp
    call    Arc::drop_slow

最有价值的实验、源码、benchmark 与汇编细节: rustc-perf 的 primary workload 中,指令数有两项改善,均为约 -0.5%;cycles 两项改善,范围 -2.8% 至 -2.3%,均值 -2.5%。代价也被完整保留:secondary 指令数有 11 项回退,均值 +0.4%、范围 +0.2% 至 +0.5%;primary linked binary 有 16 项体积回退,范围 0% 至 +0.8%。Max RSS 同时出现两项 +1.7% 至 +3.9% 的回退和三项 -2.4% 至 -6.2% 的改善,整体 artifact 反而从 400.83 MiB 微降到 400.77 MiB。

这组结果与 -O3 式取舍一致:用少量冷代码复制或布局成本换更短的热路径。一次 benchmark job 因间歇性 Git 问题失败,维护者明确说明可以忽略;但 rustc-perf 仍不是 Arc 密集服务的直接吞吐测试,工程团队应在自身 workload 上补充分支命中率、I-cache miss 和尾延迟。

适合的工程师背景: 熟悉 Rust 原子内存序、Arc 实现、LLVM 冷路径布局,或正在为 RISC-V/ARM/x86 检查引用计数热路径的运行时与性能工程师。

预计阅读收益: 约 30–40 分钟;可以迁移一套判断框架:先证明慢路径触发条件与同步语义,再反转分支让常见路径直返,最后同时检查汇编、cycles、指令数、代码体积和 RSS,避免只报告正向指标。

02 · Rust next-solver:不要让 goal 被自己注册的 opaque type 反复唤醒

原文与日期: ShoyuVanilla,2026-09-02 12:49(中原标准时间);rust-lang/rust PR #162166,原始性能故障来自 rust-analyzer #23217,完整数据见 rustc-perf 对比

为什么值得读: 这是固定点求解器中典型的“自失效”问题。next-solver 会把暂时无法完成的 goal 标为 StalledOnOpaques,并在 opaque type 存储发生变化时重试。旧实现记录的是求值开始前的 opaque 数量;如果 goal 自己在求值过程中注册 opaque,它完成后立刻看到计数变化,于是把自己的写入误判为外部进展,再做一次无价值求值。

核心技术结论: 失效令牌应该表示“完成本轮求值后我观察到的依赖状态”,而不是“开始求值前的状态”。补丁在 canonical goal 完成后读取 opaque_types_storage_num_entries(),并把这个快照写入 stalled state。直接注册 opaque 只发生在 opaque Projection goal;跳过它被自身变化唤醒是安全的,而嵌套 goal 新注册的 opaque 仍会让同一固定点迭代中的其他 goal 重评估。

核心改动不是加入缓存,而是把快照时点从输入中的预定义 opaque 数量移到求值结束后的真实存储计数:

Rust
let num_opaques_in_storage =
    self.delegate.opaque_types_storage_num_entries().opaque_types();

GoalStalledOnOpaques::Yes {
-   num_opaques_in_storage:
-       canonical_goal.canonical.value.predefined_opaques_in_body.len(),
+   num_opaques_in_storage,
    previously_succeeded_in_erased,
}

最有价值的实验、源码与 benchmark 细节: rustc-perf 最可靠的 instruction-count 指标没有任何回退,6 个 secondary 结果改善 -0.6% 至 -8.1%,均值 -4.3%。cycles 有 1 个 primary 改善 -3.4%,13 个 secondary 改善 -2.0% 至 -7.1%,但也保留 1 个 +3.9% 的 secondary 回退。代价集中在内存:4 个 primary Max RSS 回退 +0.9% 至 +1.4%,5 个 secondary 回退 +0.7% 至 +3.3%;bootstrap 472.928 秒增至 474.036 秒(+0.23%),artifact 则从 401.53 MiB 降到 400.59 MiB(-0.23%)。

PR 之后被上游 #162183 制造的合并冲突阻塞,目前仍是 Draft。因此最稳健的结论是“快照时点修正消除了若干重复求值,并在当前 perf run 中改善部分编译任务”,而不是宣称方案已经稳定合入或所有 workload 都更快。

适合的工程师背景: 正在研究 rustc next-solver、opaque type、固定点算法、增量依赖失效,或需要排查 rust-analyzer 中某类源文件导致补全与语义高亮异常变慢的编译器工程师。

预计阅读收益: 约 35–50 分钟;最大的迁移价值是学会区分“外部状态推进”和“本次计算自己写入的事实”。在查询系统、数据流分析和增量构建中,完成后再记录依赖版本,常常能避免无效自唤醒。

中国大陆 ToC 硬件价格观察

数据口径与本期修正

窗口为 2026-08-05 至 2026-09-03,单位人民币。本期不再复用旧静态图,而是新增可累计数据文件 data/deep-radar-hardware-prices-cn.json,每条记录包含型号、价格日期、报价类型、平台与原始链接;SVG 由该数据生成。折线只连接真实日期点,不插值。只有一个可复核点的品类显示单点并明确标为“样本不足”,不画一条假装稳定的横线。

需要同时更正旧报告的口径:HDD 的 ¥1,540.7 是商品页较早的“常卖价/30 天低价”统计,并非 2026-08-25 的新成交记录;类似的旧点不迁入新数据集。公开商品页的动态京东价经常要求登录或按地区隐藏,因此本期采用无需登录即可看到数值的国内比价页快照,并保留商家差异。它们是公开零售报价,不等于全市场成交均价。

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

类别 本期代表样本与最新可见价 窗口内真实记录 建议
CPU Ryzen 7 9800X3D,9/3 ¥2,599 8/21 ¥2,609 → 9/3 ¥2,599(-0.4%) 可按需入手;已接近窗口低点,继续等待的短期价差有限
GPU MSI RTX 5070 VENTUS 3X 12G,8/29 ¥4,464.34 只有 1 个可复核当前点;同页京东价为 ¥7,299,渠道差达 ¥2,834.66 观望并核对保修;低价来自亚马逊中国,不能与京东自营售后直接等价
主板 ASUS TUF B850M-PLUS WIFI7,9/2 ¥1,299 8/31 京东好价 ¥1,449 → 9/2 公开最低 ¥1,299(-10.4%) 可入手;两天内出现明确回落,接口与供电满足需求即可
DRAM Kingston FURY Beast DDR5-6000 32GB,9/2 ¥3,900 8/7 ¥3,870 → 9/2 ¥3,900(+0.8%) 刚需小量买,不囤;高位横盘,没有连续下跌证据
HDD IronWolf Pro 8TB ST8000NE001,9/1 ¥1,849 新口径下只有 1 个真实点 容量告警再分批买;不足两点,暂不判断方向
SSD ZHITAI Ti600 2TB,9/2 ¥1,919 新口径下只有 1 个真实点 观望;单一公开报价不足以证明市场趋势,优先比较同容量替代型号

价格来源: 9800X3DMSI RTX 5070 VENTUS 3XASUS TUF B850M-PLUS WIFI7Kingston FURY DDR5-6000 32GBIronWolf Pro 8TBZHITAI Ti600 2TB

判断依据

GPU 同型号的公开最低价与京东价差超过 63%,说明当前“市场价”首先受渠道、区域与保修条件影响;在没有同平台连续样本前,不应把低价渠道快照解释为整个 RTX 5070 市场下跌。主板则是同一商品页中相隔两日的国内报价,从 ¥1,449 降到 ¥1,299,短期变化可直接复核。

存储与内存方面,闪存市场 9 月 1 日报价显示 1Tb QLC/TLC NAND 日报价仍为 $26.50/$29.00,渠道 PCIe 4.0 SSD 1TB/2TB 周报价为 $130/$250;这些上游美元价只用于判断供需,不混入中国 ToC 人民币折线。当前没有连续下跌信号,所以 DRAM 仍建议刚需小量购买,SSD/HDD 在新数据只有单点时不做方向性预测。

本期结论

两篇 Rust 材料都在修复“少数路径拖累多数工作”的问题:Arc::drop 把最后引用才需要的同步与析构移出热路径;next-solver 则把求值结束后的 opaque 存储状态作为失效基线,避免被自己的写入再次唤醒。硬件部分也从不可累计的静态快照改成数据驱动:从今天起每期追加真实观测并重新生成滚动图,价格未变仍可留下同口径采样,采集失败则明确缺失。