FMA 仿真揭出 C/Rust 标准库 rounding 缺陷
FMA(fused multiply-add)是一次舍入完成 a * b + c 的浮点原语,用于高精度三角函数等。作者 Sergey "Shnatsel" Davidoff 为 fearless_simd 在无硬件 FMA 的平台上做 SIMD 仿真,按 Boldo/Melquiond 2008 年 Coq 证明算法实现后,发现 Rust 标准库 f32::mul_add / std::simd 以及 musl libc 的 fmaf(源自 FreeBSD 2005–2011 代码)在 subnormal 的 halfway rounding 上处理错误。
无 AVX2 的 x86(Firefox 硬件调查约 15%)仍需软件 FMA;作者的 SIMD 路径相对 std::simd 约快 5×。fearless_simd 已修复;compiler-builtins 补丁仍在审;musl 邮件列表已有修复讨论但尚未合并。可用 a=0x97000800、b=0x1cfff001、c=0x00010002 检查:正确结果 0x00010001,错误结果 0x00010002。
原文链接:https://shnatsel.github.io/implementing-fma-finding-bugs-in-std/
rustup 1.29.1:并行检查更新与并发装组件
rustup 是官方 Rust 工具链安装器。1.29.1 让 rustup update 先并行检查更新,component add 多个组件可并发安装;rustup-init 与部分 rustup 调用中不再隐式安装当前工具链并给出警告;rustup doc 新增 --serve,用本地 HTTP 提供文档。
在 64 位 Windows 安装 i686-pc-windows-* host 需 --force-non-host;取消安装时不再留下意外文件;修复 rustup-init.sh 在 Windows 上可能失败的问题;文案将 “target triple” 改为 “target tuple”(CLI 选项未破坏兼容)。正式支持 aarch64-pc-windows-gnullvm host。已安装用户可执行 rustup self update 或 rustup update。
原文链接:https://blog.rust-lang.org/2026/09/01/Rustup-1.29.1/
rustc_codegen_gcc #43:unwinding 做到 100%
rustc_codegen_gcc 是 rustc 的 GCC 代码生成后端,用于 LLVM 未覆盖的架构。Progress Report #43 称 unwinding 已从约 80% 做到 100%;函数/变量 attributes 从 22% 升到 60%。UI 测试通过 7699(+543),失败 21(-59)。
作者称 rustup 分发版本尚未包含该 unwinding 修复,同步问题大多已解决;还向 Rust unwind 库提交了修复。下一步计划先编译若干常用 crate,再做 crater run。赞助方包括 Futurewei、Shnatsel 与 Rust Foundation。
原文链接:https://blog.antoyo.xyz/rustc_codegen_gcc-progress-report-43
Unstruct:把 XML 批量拆成可入库的 TSV
Unstruct 是把一份或多份 XML 转成一份 UTF-8 TSV 的命令行工具,便于批量导入关系数据库。作者称该工具已处理数十亿条 XML CDR(通话详单)。通过 parser 配置选择输出列、recording 元素、过滤器、属性与命名空间;每个匹配的 recording 生成一行,嵌套 recording 继承外层值。
批处理 fail-fast:全部成功后原子写入输出,失败不发布部分结果。MIT 许可,仓库提供 BAG/CDR/FTP/统计等示例。
原文链接:https://github.com/Roenbaeck/unstruct
From Rust中文社区 Mike
社区学习交流平台订阅:
评论区
写评论还没有评论