2026.06.09 —— 今日 10 則
TODAY'S THREAD 今天的共同線索是「把效能與安全的成本逼到具體的那一層去算」——MiMo 用 FP4 與 speculative decoding 把 1T 模型推到每秒千 token、Go 的 x509 因兩個 byte 的編碼差異就拒簽合法憑證、uv 把供應鏈檢查前移到 resolver,而一個 12 萬行 Rust 後端把多租戶隔離直接釘進型別系統。
MiMo-v2.5-Pro-UltraSpeed——1T 模型衝到每秒 1000 token
小米的 TileRT 團隊把一個 1T 參數的 MoE 模型推到單機 8 卡、每秒 1000 token,靠的是三層疊起來:只把 MoE expert 量化到 FP4(MXFP4)而其餘維持原精度、用 DFlash 的 block-level 平行草稿取代自回歸 speculative decoding、再用常駐 GPU 的 persistent kernel 與 warp specialization 消掉 operator 邊界的啟動開銷。DFlash 報告的接受長度在程式碼任務達 6.30、數學推理 5.56,意味著每輪 8 個草稿 token 約有 6-7 個被接受。對在自架大模型推理、被 throughput 與延遲夾擊的人,這是一份把「模型側量化 × 演算法側解碼 × 系統側 kernel」三層 co-design 講清楚的案場。
Clairvoyant——用預測式 SJF 排程消 LLM 後端的 head-of-line blocking
序列化的 LLM agent 後端最容易卡在 head-of-line blocking:一個長生成的 request 排在前面,後面一堆短的全被拖住。Clairvoyant 的作法是先預測每個 request 的生成長度,再用近似 SJF(shortest-job-first)的順序排程,讓短作業先走。論文把它放在多 agent 協作的 Byzantine-resilient 場景下,顯示尾延遲與整體吞吐都有改善。對在自架 agent orchestration、被某幾個長尾請求拖垮 P99 的人,這是把排程從 FIFO 換成「預測長度」的一種嘗試。
愚弄 Go 的 X.509 憑證驗證——兩個 byte 就讓合法鏈被拒
兩張在數學上都合法的憑證,只差兩個 byte——CA 的 commonName 一個用 PrintableString(tag 0x13)、一個用 UTF8String(tag 0x0c)——Go 的 crypto/x509 就會拒絕用前者簽的鏈。原因在 findPotentialParents() 拿 RawIssuer 的原始位元組去 byName map 做 byte-for-byte 比對,而非語意比對;OpenSSL 把不同字串編碼視為等價、照簽不誤。這是 fail-closed 的設計:它不會放行惡意憑證,卻會在你升級憑證工具鏈、新葉憑證被舊 CA 簽時,無聲地把合法鏈一起擋掉。
Fil-C 0.679 釋出——不換語言就拿到記憶體安全的 C 編譯器
Fil-C 是一個讓既有 C/C++ 程式碼直接獲得記憶體安全的編譯器——用垃圾回收與帶能力資訊的胖指標(InvisiCaps),把 use-after-free、越界存取這類 UB 變成被攔截的執行期錯誤,而不必整包改寫成 Rust。0.679 版釋出了 Linux/x86_64 build。代價是效能與相容性仍在演進,但它證明「不換語言也能拿到記憶體安全」這條路真的走得通。對維護大量 legacy C、又無法整包重寫的團隊,這是值得持續追蹤的選項。
amd64 microarchitecture level 對 Go 程式幫助多大
Go 從 1.18 起支援 GOAMD64=v1..v4 針對較新的 x86-64 微架構等級編譯,但實際上能快多少?Lemire 做了量測:對多數一般 Go 程式,從 v1 升到 v3/v4(解鎖 AVX2、BMI 等指令)帶來的整體加速其實有限,真正吃到好處的是那些熱點落在可向量化迴圈的程式。結論很務實——別預期換個編譯旗標就免費加速,先量測你的瓶頸在不在編譯器搆得到的地方。對在調 Go 服務效能、考慮要不要設 GOAMD64 的人,這是一份有數字的現實檢查。
Rotation revisited——clang libcxx 的 cycle decomposition
Raymond Chen 這兩篇接力拆解 clang libcxx 怎麼實作 std::rotate:用 cycle decomposition 把旋轉看成若干個獨立的元素環,沿著每個環各搬一次就完成,達到最少的搬移次數。第二篇再進一步,示範如何避開先算 gcd(最大公因數)來決定環數的那一步。對寫高效能容器、或單純好奇「標準庫一行函式底下藏了什麼數學」的 C++ 工程師,這是一組短而紮實的演算法導讀。
把 Cloudflare 威脅情報變成即時 WAF 規則
Cloudflare 把自家威脅情報直接接進 WAF 規則語言:新的 cf.intel 欄位讓你在規則裡引用某個 IP/ASN 的風險評分、惡意類別與信譽,不必再自己維護黑名單或外掛 feed。實務上這把「情報」與「執法」之間的延遲壓到近即時——情報一更新,規則就跟著生效。對在守 edge、想用一條表達式擋掉已知威脅來源的 SRE 與安全工程師,這是把威脅情報變成可程式化條件的一步。
nixidy——用 Nix 做 Kubernetes GitOps
nixidy 想用 Nix 來描述 Kubernetes 的 GitOps:把整套 manifest 與 Argo CD application 用 Nix 模組與 module system 宣告出來,build 成 YAML 再交給叢集。好處是拿回 Nix 的型別檢查、模組合成與可重現性,壞處是團隊得先吞下 Nix 的學習曲線。對已經在用 Nix、又受夠 Helm template 字串拼接的人,這是一條把基礎設施宣告統一在同一套語言裡的路徑。
120k 行 Rust——Nosdesk 後端把多租戶隔離釘進型別系統
一個 12 萬行、260 個模組、單一 binary 出貨的 Rust 後端,作者把設計決策一條條攤開:Actix-web + Tokio + 同步 Diesel,重查詢丟到 spawn_blocking 再用 ReceiverStream 串回,避免 bootstrap 同步時把整個結果集釘在 RAM。最值得抄的是兩個型別層防線——TenantConn/PlatformConn 兩個 extractor 是碰到連線池的唯一入口,每筆查詢自動帶 workspace context 走 Postgres RLS;而 plugin 安裝函式要求一個只能在驗證模組內建構的 InstallToken,於是「插入未簽章 plugin」這件事在型別系統裡根本表達不出來。對在寫多租戶 SaaS 後端的人,這是把「正確性靠型別逼出來、而非靠紀律」示範到底的程式碼導覽。
uv 內建漏洞與惡意套件檢查
Astral 在 uv 裡加進 vulnerability 與 malware 檢查:解析依賴時就能比對已知漏洞資料庫與惡意套件清單,把供應鏈防線從 CI 的事後掃描往前移到 resolver 這一層。意義在於「裝之前就先攔」,而不是裝完才在掃描報告裡發現。對用 uv 管 Python 依賴、在意 supply-chain 風險的人,這是把安全檢查內建進日常 workflow 的一步。