本期检索说明

先读取 content/collections/deep-radar 截至 2026-10-18 的全部原文链接,并按 URL、标题与实现机制去重。最近 24 小时内,Rust 出现两项能同时提供实测、源码或汇编证据、原理推导与工程迁移价值的一手材料:一项重写 size_of_val、align_of_val 与 DST 字段投影的后端生成逻辑;另一项以 RX 9070 XT 上的 LLM 推理和原生 AMDGPU 指令证明浮点原子加法的价值。两者均未在既往报告出现。

Java/JVM 当天只有 socket、JDI 参数与 Unsafe intrinsic 等正确性/测试修复;Kotlin 的新提交以构建、测试和正确性为主;Zig 没有新 PR;Linux 也没有新的材料同时满足三项证据红线。因此本期只收录 2 篇 Rust 一手材料。第二篇仍是开放的 API 提案,不把实验结果写成已经进入 Rust 标准库的能力。

主题 原始发布日期 一手来源与交叉验证 截稿状态 推荐强度
rustc DST 布局查询与字段投影代码生成 2026-10-18 09:57(中原标准时间) Rust PR #164492 / LLVM 与 Cranelift 源码 diff / codegen 测试 / rustc-perf Draft,开放评审;最新修订已处理 nuw nsw 掩码问题 强烈推荐,重点看布局代数如何直接缩短机器 IR
GPU 浮点原子加法的 Rust API 诉求 2026-10-18 10:25(中原标准时间) Rust issue #164493 / Rust CAS 与 AMDGPU inline asm / LLVM intrinsic / HIP atomicAdd 对照 开放提案,尚无稳定 API 推荐,重点看 contention 下 CAS 与原生原子的数量级差异

01 · rustc DST:把递归布局计算压缩成常数次 IR

原文与日期: Josh Liebow-Feeser,2026-10-18 09:57(中原标准时间);Rust PR #164492、最新源码 diff 和 rustc-perf 对比。PR 明确披露由 AI agent 代表作者生成,当前仍是 Draft,适合审阅思路与证据,不应视为已合并结论。

为什么值得读: 旧的 size_and_align_of_dst 每穿过一层 struct/tuple 都同时递归求 size 与 align,即使调用者只需要其中一个;Layout::for_value_raw 连续查询二者时还会重复加载 vtable 并重复舍入。新方案不是简单缓存,而是先用布局代数在编译期压缩整个 wrapper chain,再针对 slice/str 尾部与 dyn Trait 尾部分别生成最短 IR。这是“把领域不变量编码进代码生成器”的高密度案例。

核心技术结论: 补丁拆出 size_of_dst、align_of_dst 与 dst_field_offset,并同时实现于 LLVM 和 Cranelift 后端。slice-tailed DST 被折叠为 outer_offset + align_to(base + offset, align):运行时至多保留一次乘法、一次掩码前加法、一次 and,只有外层 packed 布局确实需要时才追加一次掩码后加法。dyn Trait 路径跳过 offset == 0 && align == 1 的 ManuallyDrop、UnsafeCell 等空操作 wrapper,合并相邻兼容步骤,并只在必要时加载 vtable.align。MIR InstSimplify 还把 str、单字段 wrapper 及一元 tuple 的 align_of_val 折叠为静态元素对齐。

Rust
// 嵌套 slice DST 的目标形态:一次 add + 一次 mask
let unaligned = len + 21;
let size = unaligned & -8;

// dyn Trait wrapper:从最内层向外流式折叠
if cur.offset == 0 && cur.align == 1 {
    continue;
}

最有价值的实验、源码与 benchmark 细节: codegen 测试把四层 Level3(u64, Level2(...[u8])) 的结果固定为 add nuw i64 %len, 21 后接 and ..., -8,而 ManuallyDrop<dyn Trait> 的 size_of_val 只剩一次 vtable size load。作者的定向 -O3 基准中,零偏移、align(1) 的 dyn Trait wrapper 加速 2.18 倍,Layout::for_value::<Path> 加速 1.50 倍。官方 rustc-perf 的可靠指令数指标只有 1 个 primary 样本改善 0.4%,无指令回退;secondary 最大 RSS 两个样本平均改善 4.2%,bootstrap 489.750 → 488.876 秒(-0.18%)。负向结果不能省略:cycles 有 1 个 primary 样本回退 2.5%,2 个 secondary 样本平均回退 5.5%(+2.2% 至 +8.7%);linked binary 中也有 1 个样本增大 0.6%。评审还发现早期 nuw nsw 可能让 LLVM 生成很大的 and immediate,最新版本改为掩码前只保留 nuw,以维持 x86-64 的紧凑 andq $-8 编码。

适合的工程师背景: 熟悉 Rust DST/vtable、LLVM IR、布局与对齐规则,或正在维护编译器后端、allocator/deallocation 热路径的工程师。

预计阅读收益: 约 60–90 分钟;能学会将递归布局公式化简为常数次运行时运算、区分静态与动态对齐,并理解 nuw/nsw 元数据如何反过来影响指令选择。

02 · GPU 浮点原子:CAS 回退为什么会输给原生 atomic fadd

原文与日期: yunz-qiao,2026-10-18 10:25(中原标准时间);Rust issue #164493、LLVM atomicrmw fadd 语义 与 issue 中可直接复现的 Rust、AMDGPU inline asm、LLVM intrinsic、HIP C++ 对照代码。

为什么值得读: 这不是抽象的 API 偏好,而是从 std::offload 的 LLM attention reduction 出发,把“用整数原子位模式做 CAS 循环即可”的常见回答放到真实 GPU contention 下检验。材料同时覆盖端到端 token/s、微型高争用 kernel、LLVM intrinsic 与硬件指令,足以把 API 缺口和性能后果连接起来。

核心技术结论: AtomicU32::compare_exchange_weak 能在语义上实现浮点加法,但每次失败都必须重新读取、把 bit pattern 转回 f32、相加并重试;线程越多、热点越集中,失败重试越严重。原生路径直接发出 AMDGPU global_atomic_add_f32,或调用 llvm.amdgcn.flat.atomic.fadd.f32.p0;HIP 对照则使用 atomicAdd(p, 1.0f)。因此工程问题不是“能否表达”,而是 Rust 是否能稳定、跨后端地暴露与 LLVM atomicrmw fadd 对应的能力,并清楚定义 IEEE 浮点、NaN 与内存序语义。

Rust
while let Err(seen) = a.compare_exchange_weak(
    cur,
    (f32::from_bits(cur) + x).to_bits(),
    Relaxed,
    Relaxed,
) {
    cur = seen;
}

core::arch::asm!(
    "global_atomic_add_f32 {off}, {v}, {base} scope:SCOPE_DEV",
    off = in(vgpr32) 0u32,
    v = in(vgpr32) x,
    base = in(sgpr64) p as u64,
);

最有价值的实验、源码与 benchmark 细节: 在 RX 9070 XT(gfx1201)上,GPT-2 在 context 1,023 的 decode 吞吐从未拆分 attention 的 171 token/s 提升到原生浮点原子路径的 245 token/s,提升 43.27%;CAS-loop 路径为 233 token/s,原生指令相对它再高 5.15%。更能揭示机制的是高 contention 数据:没有 inline asm 时,Rust 在 context 1,024 的 attention kernel 约慢 3.8 倍;对单个共享 float 的争用超过 300 倍;调优后的 vocabulary softmax sum 慢 3–5 倍;一线程一元素的 launch 最差达到 400 倍。issue 给出完整 no_std kernel、-Ctarget-cpu=gfx1201 构建命令与 HIP -O3 --offload-arch=gfx1201 对照,避免只凭端到端数字猜原因。

适合的工程师背景: 熟悉 Rust atomics、LLVM/AMDGPU、GPU reduction,或正在用 Rust 实现 attention、softmax、图计算等高争用归约 kernel 的工程师。

预计阅读收益: 约 35–50 分钟;能掌握 CAS-loop 在 GPU 上的失败放大机制、如何设计原生指令/LLVM intrinsic/HIP 三方对照实验,以及评审浮点原子 API 时必须追问的数值与内存模型边界。

中国大陆 ToC 硬件价格观察

数据口径

窗口为 2026-09-20 至 2026-10-19,单位人民币,六类硬件固定同一 SKU。今天通过公开比价页实时渲染结果复核 CPU、主板、HDD 与 SSD 四类报价;GPU 与 DRAM 页面均显示“暂无报价”,因此不新增点。重复价格作为真实采样保留,用来区分“已复核横盘”和“未取得数据”。SSD 只记录固定 2TB 规格全网比价 ¥1,699,不采用跨容量 819 元起;主板继续采用当前规格全网比价 ¥1,298,不采用系列 1,169 元起。

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

类别 10 月 19 日可复核价 30 日窗口内真实走势 建议
CPU Ryzen 7 9800X3D,京东 ¥2,609 9/21 ¥2,609 → 9/23 ¥2,579 → 10/1–8 ¥2,694–2,699 → 10/9–19 ¥2,609 可关注但不追价;连续十一日横盘,仍比窗口低点高 ¥30
GPU 今日暂无报价;最后可复核 10/18 ¥4,464.34 先前多次实时复核均为 ¥4,464.34,今日出现空白 观望;单一页面失去报价,不能沿用旧值或推断市场涨跌
主板 ASUS TUF B850M-PLUS WIFI7,当前规格 ¥1,298 10/12–14 的 ¥1,169 为系列起价;10/15–19 当前规格均为 ¥1,298 观望并核对完整型号;当前规格连续五日一致
DRAM 暂无报价;最后可复核 9/9 ¥3,900 本窗口没有可比报价 观望;不以其他容量、颗粒或时序替代固定 SKU
HDD IronWolf Pro 8TB ST8000NE001,京东 ¥3,550 9/21–10/15 ¥1,849 → 10/16–19 ¥3,550 明确观望;低价渠道退出后连续四日只剩高价样本,仍不能解释为行业普涨
SSD ZHITAI Ti600 2TB,京东 ¥1,699 9/23–10/11 ¥1,799 → 10/12–13 ¥1,739 → 10/15–16 ¥1,699 → 10/17–18 ¥1,799 → 10/19 ¥1,699 可比价后入手;回到窗口低点,但单日回落仍需观察是否持续

价格来源: 9800X3D、MSI RTX 5070 VENTUS 3X、ASUS TUF B850M-PLUS WIFI7、Kingston FURY DDR5-6000 32GB、IronWolf Pro 8TB、ZHITAI Ti600 2TB。

判断依据

CPU、主板与 HDD 今日均与昨日同口径报价一致。Ti600 2TB 从 ¥1,799 回落到 ¥1,699,页面顶部 ¥819 仍是跨容量系列起价,不能作为 2TB 行情;GPU 页面从昨日的可见报价转为“暂无报价”,走势图不复制旧点。HDD 固定 8TB SKU 连续四日为 ¥3,550,仍只说明原 ¥1,849 低价渠道退出后的可见报价变化。DRAM 固定 SKU 继续缺价。本期没有加入未经核实的新品或原厂产能消息。

其它你可能关心的

本期结论

两项材料都把“抽象等价”与“机器成本”分开验证:DST 优化利用布局代数把 O(n) wrapper 处理压成常数次 IR,却仍需面对 cycles 噪声与指令选择细节;浮点 CAS 在语义上可用,但热点争用下与原生原子指令存在 5% 到数百倍不等的差距。可迁移的方法是先从不变量推导最短表示,再用定向微基准、端到端工作负载和负向指标共同约束结论。