vatt'ghern jaskier's ballads

2026.09.07 —— 今日 10 則

TODAY'S THREAD 今天的三篇深入文章各自去戳一個平常沒人查證的預設:cgo 是純 Go 追不上 C 時的必要代價、trusting-trust 是編譯器獨有的問題、ORM 是資料存取層理所當然的起點——一份 benchmark、一篇論文與一篇長文分別給了反例。

10 items ai · 3 systems · 3 infra · 2 web · 1 backend · 1
0 / 10 read
#08

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 訓練軌跡都發散了。

read source → attention

#09

測試綠燈了,review 那關還沒過

SWE-Gate 把 code review 的約束一起放進 coding agent 的驗收條件,約束是從真實 pull request 回饋抽出來的,題庫是 75 個 Python repo 的 303 個 repository-level 修復案例。結果是 644 次通過功能測試的修復裡,有 221 次不滿足題目給的 review constraint。作者的結論講得很直白:只看測試綠燈會高估 agent 在真實開發情境裡的能力。

read source → coding-agents

#10

把模型當評分尺之前,先量這把尺會不會晃

兩份預先註冊的稽核、52,988 次受測請求,得到的是 LLM 評審的重測信度不合格:同一時間窗內重複排名的 Spearman 只有 0.400,要求是 0.90,隔天用位元完全相同的輸入重播是 0.78,要求 0.99。作者試過換指標、加抽樣、拉長等待、換供應商、自己架,改善都有限。他們給的一句話是「on a shared endpoint, a model name is not a frozen instrument」——共用端點上的模型名稱不是一把固定的量尺。

read source → evaluation

#01

最後一個 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 倍。

read source → deep read simd

#06

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 之前把這個限制拿掉。

read source → linux

#07

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 切換。

read source → rust

#02

不用碰編譯器,改 strip 就夠了

Thompson 的 trusting-trust 一向被當成編譯器獨有的問題,這篇把它搬到 GNU strip 上——一支只處理已編譯 ELF、根本不看原始碼的工具。作者在 NixOS 的 bootstrap 裡竄改單一份 strip,後門就沿著 strip 的世代自我複製下去,即使最初那份已經不在相依圖裡。概念驗證的結果是一個完整的圖形安裝程式毫無錯誤地建置完成,而它幾乎每一支 binary 都被植入了後門。

read source → deep read supply-chain

#04

劫持了路由,還順手拿到了合法憑證

Softaculous 放在 Hetzner 的 162.55.80.0/24 在 2026 年 8 月 28 日到 30 日之間被 BGP 劫持,流量被導去攻擊者的主機,變成一台假的更新伺服器。真正麻煩的不是劫持本身,是攻擊者在劫持期間替那些網域取得了技術上完全有效的 TLS 憑證,事故報告的說法是受影響的連線 showed no certificate warning。gslin 指出的補救方向是 DNS CAA——沒有它,同一招對還沒驗證程式碼簽章的舊 client 可以再來一次。

read source → bgp

#05

關閉時清空所有站台資料,Google 自家的除外

Chrome 有一個「關閉瀏覽器時刪除所有站台資料」的設定,而 Google 自家網域不在它的管轄範圍內:關掉再打開,www.google.com 的資料還在。這是第二次被記錄下來,上一次是 2020 年。原始調查來自 lapcatsoftware,gslin 自己已經跳去 Firefox,只是繼續盯著隔壁棚的發展。

read source → privacy

#03

不用 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 得自己寫。

read source → deep read database

today's deep reads

deep · 01 最後一個 cgo 相依,用 Go SIMD 換掉了 deep · 02 不用碰編譯器,改 strip 就夠了 deep · 03 不用 ORM 的話,那用什麼