2026.09.07 —— 今日 10 則
TODAY'S THREAD 今天的三篇深入文章各自去戳一個平常沒人查證的預設:cgo 是純 Go 追不上 C 時的必要代價、trusting-trust 是編譯器獨有的問題、ORM 是資料存取層理所當然的起點——一份 benchmark、一篇論文與一篇長文分別給了反例。
FP4 拿來推論可以,拿來訓練會走偏
這篇把 FlashAttention-4 在 Blackwell 4-bit tensor core 上的路徑拆成兩條分開處理:非因果推論用 Direct-P 把 score 直接映成 FP4 機率,在 NVIDIA GB200 上最高達到 BF16 前向吞吐的 2.13 倍;因果路徑則從存下的量化資料重建機率、梯度算子換成 8-bit 浮點,單卡 80 億參數的一次完整更新最多快 1.14 倍。真正值得記住的是那個反面結果——分散式訓練保留 FP8 的機率與 value 沒問題,但作者測過的每一條 MXFP4 機率與 value 訓練軌跡都發散了。
測試綠燈了,review 那關還沒過
SWE-Gate 把 code review 的約束一起放進 coding agent 的驗收條件,約束是從真實 pull request 回饋抽出來的,題庫是 75 個 Python repo 的 303 個 repository-level 修復案例。結果是 644 次通過功能測試的修復裡,有 221 次不滿足題目給的 review constraint。作者的結論講得很直白:只看測試綠燈會高估 agent 在真實開發情境裡的能力。
把模型當評分尺之前,先量這把尺會不會晃
兩份預先註冊的稽核、52,988 次受測請求,得到的是 LLM 評審的重測信度不合格:同一時間窗內重複排名的 Spearman 只有 0.400,要求是 0.90,隔天用位元完全相同的輸入重播是 0.78,要求 0.99。作者試過換指標、加抽樣、拉長等待、換供應商、自己架,改善都有限。他們給的一句話是「on a shared endpoint, a model name is not a frozen instrument」——共用端點上的模型名稱不是一把固定的量尺。
最後一個 cgo 相依,用 Go SIMD 換掉了
Debian Code Search 用了七年的 powturbo/TurboPFor 是它最後一個 cgo 相依,Michael Stapelberg 用 Go 1.26 的實驗性 SIMD 把它換成純 Go。順序是先把純量路徑做完——PGO、減少配置、用 generics 對 1 到 32 每個 bit width 各生一份 bitpacking,debian-mix 的編碼從 559.5 Mval/s 上到 783.8 Mval/s;再進 AVX2 與 AVX512,最後靠 positional popcount 把每個值的 exception 掃描從 12 條指令壓到 1.5 條。純 Go 版本最後超過了原本的 cgo 實作,不過作者把同一組 AVX512 kernel 反向移植回 C 之後也說了,那時 Go 大約慢 1.4 倍。
M3 進了安裝程式,睡眠與 HDMI 還沒
Asahi Linux 的安裝程式正式收下 M3、M3 Pro 與 M3 Max,webcam、內建麥克風、跑到硬體上限 10 Gb/s 的 USB 3、含 AV1 的硬體影片解碼、WiFi 與藍牙都能動。缺的部分寫得同樣清楚——睡眠因為畫面只能靠韌體給的 framebuffer 而停用,MacBook 上的 HDMI 埠不會動,M3 Ultra 的 Mac Studio 還沒支援,3D 加速則是官方明說現在不要期待效能或能耗表現。目前安裝要走 Expert 模式,團隊的目標是在 Fedora Linux 45 beta 之前把這個限制拿掉。
coreutils 的參數錯誤,現在會指到那個字元
uutils coreutils 0.11.0 把命令列參數的解析錯誤改寫成編譯器那種帶 caret 的診斷,底層用的是 Rust 的 ariadne。tr 'qw[y-b]' x 現在會在反過來的範圍底下畫線並問 did you mean 'b-y',sort -k2.3x 會標出多出來的那個 x。這套只在 stderr 是 terminal 時渲染,管線與腳本拿到的仍是原本的單行訊息;0.11.0 有 28 個工具採用,行為可以用 UUTILS_DIAG 切換。
不用碰編譯器,改 strip 就夠了
Thompson 的 trusting-trust 一向被當成編譯器獨有的問題,這篇把它搬到 GNU strip 上——一支只處理已編譯 ELF、根本不看原始碼的工具。作者在 NixOS 的 bootstrap 裡竄改單一份 strip,後門就沿著 strip 的世代自我複製下去,即使最初那份已經不在相依圖裡。概念驗證的結果是一個完整的圖形安裝程式毫無錯誤地建置完成,而它幾乎每一支 binary 都被植入了後門。
劫持了路由,還順手拿到了合法憑證
Softaculous 放在 Hetzner 的 162.55.80.0/24 在 2026 年 8 月 28 日到 30 日之間被 BGP 劫持,流量被導去攻擊者的主機,變成一台假的更新伺服器。真正麻煩的不是劫持本身,是攻擊者在劫持期間替那些網域取得了技術上完全有效的 TLS 憑證,事故報告的說法是受影響的連線 showed no certificate warning。gslin 指出的補救方向是 DNS CAA——沒有它,同一招對還沒驗證程式碼簽章的舊 client 可以再來一次。
關閉時清空所有站台資料,Google 自家的除外
Chrome 有一個「關閉瀏覽器時刪除所有站台資料」的設定,而 Google 自家網域不在它的管轄範圍內:關掉再打開,www.google.com 的資料還在。這是第二次被記錄下來,上一次是 2020 年。原始調查來自 lapcatsoftware,gslin 自己已經跳去 Firefox,只是繼續盯著隔壁棚的發展。
不用 ORM 的話,那用什麼
作者主張 time series、event log、job queue 這類資料要的往往是 record set 而不是一列一個 entity object,ActiveRecord 用在這些地方「seems clumsy and wasteful」。他提出的替代是每個領域手寫一個 store class,方法直接回傳純 hash,SQL 明寫,用 RETURNING 把刪除與取值併成單一 query。他自己說這是粗略的猜測:一張表大概只會被問出十來種查詢,換到的是少掉的物件配置與 prepared statement 快取,代價則是 SQL 得自己寫。