2026.07.04 —— 今日 10 則
TODAY'S THREAD 今天的主線是「舊系統裡藏著沒被驗證過的假設」——SQLite 的 WAL checkpoint 藏了 16 年的競態、瀏覽器分頁裡真的能開機一個 Windows 核心、ActivityPub 生態系的相容性全靠土法煉鋼,都是把系統撐到邊界才會現形的裂縫。
Fable 5 的網路安全分類器與越獄嚴重度框架
Anthropic 公布 Claude Fable 5 的網路安全分類器,把請求分成四級——從勒索軟體、規避防禦等被禁用途,到滲透測試、漏洞掃描等雙重用途,再到安全編碼等良性用途,並刻意設下「安全邊際」,寧可誤擋部分無害請求也不放過真正的攻擊。文章同時提出一套產業共通的「網路越獄嚴重度」(CJS) 框架,用能力提升幅度、適用範圍、武器化難度、可發現性四個軸給越獄手法打 0 到 4 分,總分對應 CJS-0 到 CJS-4。這是少見把「越獄有多嚴重」講成可量化標準的嘗試,而不是各家廠商各自表述。
agentic coding 裡,推理強度比工具存取更能一次做對
一份跑了 90 次獨立 agent 的觀察研究發現,用同一份規格建同一個即時協作看板應用時,容器部署失敗才是主要缺陷來源——44% 的執行第一次就在容器部署上失敗,這個失敗率隨模型世代大幅變動,但總分卻幾乎不變。把推理強度從 High 拉到 xHigh,一次就做對的比例從 28% 衝到 89%,需要修正的提示次數少了約五倍,代價是多花 9% 到 29% 的成本;反倒是額外接上測試工具,成本多花 42% 到 68%,功能分數與可靠度卻沒有提升。
瀏覽器分頁裡跑一個真的 Windows 核心
開發者 Matt Suiche 做出 nanokrnl——一個編譯成 WebAssembly、能在瀏覽器分頁裡互動開機的 64 位元 Windows 核心,搭配自製的 67KB x86-64 模擬器 nanox(先前用 v86 沒能成功)。系統支援冷開機(約跑 1 億條解譯指令)與快開機兩種路徑,快開機靠還原一份 901KB 壓縮快照——只存 128MB 位址空間裡 1052 個非零分頁,達到 4.7 倍壓縮率。整套跑起來的系統只佔約 4MB,跟 Windows 95 的最低需求相當。
crustc:把整個 rustc 翻譯成 C
開發者用自製工具鏈「cilly」——三年打磨的 Rust 轉 C 編譯器——把 rustc 1.98.0-nightly 整套翻譯成約 4600 萬行 C 程式碼,讓 Rust 編譯器能單靠 GCC 加 make 建置,不必自建整套 LLVM 工具鏈(執行時仍動態連結一份 libLLVM.so)。專案用「witness programs」偵測目標編譯器的實際能力,盡量只假設 ANSI C 標準以確保跨平台相容,連 ARM64 上 struct 回傳該不該用 sret 這種 ABI 細節都得個別處理。作者的 ARM64 Linux 機器上,不開優化、20 條平行編譯工作下約 78 秒可以編完。
HotSpot JIT 學會逐位元推理,讓遮罩指令直接消失
HotSpot 的 C2 JIT 編譯器新增「已知位元」分析——追蹤每個位元是確定為 0、確定為 1 還是未知,而不只是估計數值範圍。這讓編譯器能認出像 (x << 2) & -4 這種運算其實多餘:左移 2 位就已經保證低兩位是 0,後面那個 AND 操作根本不需要執行。在 JDK 27 上,這個遮罩指令在產生的機器碼裡完全消失,(x << 2) & -4 直接變成一條算移位的 lea 指令;同樣的最佳化在 JDK 24 上做不到。
潛伏 16 年的 SQLite WAL 競態,靠 TLA+ 抓出來
Canonical 的 dqlite 團隊用 TLA+ 形式化驗證為 SQLite 的 WAL checkpoint 邏輯建模,找到一個潛伏 16 年的資料競爭——checkpoint 讀到過期的 WAL salt 值,導致它在另一筆交易重置 WAL 之後仍誤判並處理舊分頁,最少只要 20 步狀態轉換就能觸發資料庫毀損。dqlite 本身不受影響,因為它靠獨佔鎖把 checkpoint 與寫入操作序列化;SQLite 官方已在 3.51.3 版加入 salt 比對修補。這篇報告值得注意的地方,不是又一次「SQLite 可能壞掉」的提醒,而是形式化方法怎麼抓出程式碼審查抓不到的邊界案例。
ClickHouse 為什麼在可觀測性戰場上佔優勢
ClickHouse 靠欄式儲存只讀取查詢用得到的欄位——40 個欄位裡只碰 3 個時,只需掃 40GB 而非 800GB,在真實可觀測性資料上做到 10 到 14 倍壓縮率,相較 Elasticsearch 只有 2 到 3 倍。更關鍵的是它在不同規模下維持同一套維運架構:每天 1TB 資料量時 7 個 pod、月費 1500 到 2500 美元,到每天 10TB 時架構不變、只是 shard 變多,月費 1.8 萬到 2.8 萬美元。對照組是 Elasticsearch 在 10TB 規模要價 9.5 萬到 14 萬美元、Loki 需要 180 多個 pod 與專職平台團隊、Datadog 帳單則可能衝破百萬美元。
Cadence:多提案者同時出塊的極致管線化共識
Cadence 是一個拜占庭容錯的多提案者共識協定,把區塊間隔完全跟網路延遲脫鉤——每個區塊在自己的共識實例裡各自定案,不必等前一個區塊傳播完成,作者稱之為「極致管線化」。它同時拿掉單一領導者對交易排序的壟斷:多個驗證者可以同時對同一區塊提案,並保證在同步網路下,誠實提案者收錄的交易不會被審查或延後。在 Monad 200 個驗證節點、每個區塊 5 個提案者的模擬下,定案平均耗時 219 毫秒(推測性定案只要 167 毫秒)。
為什麼 ActivityPub 難做——Fedify 作者的五個場景
Fedify 作者列出讓 ActivityPub 難以實作的五個場景:HTTP 簽章要同時應付 draft-cavage 舊制與 RFC 9421 新制兩套競爭標準、JSON-LD 允許同一份內容用不同結構表示、傳遞佇列要自己處理冪等與順序保證、各家實作互不相容的生態系怪癖,還有防 SSRF 與內容偽造的資安要求。Ghost 團隊的原話是「就連早期原型開發的短短幾週內,我們就撞上了上述所有問題」。Fedify 把這些痛點包成框架——自動協商簽章並快取、用型別化的詞彙類別包住 JSON-LD 差異、內建重試與熔斷的傳遞基礎設施,目前支援十三種既有網頁框架。
PostgreSQL 遇上 OOM killer:為什麼要開嚴格記憶體超賣
Linux 的記憶體超賣讓行程能配置超過實體記憶體的虛擬空間,核心只在真的用到時才給實體頁——但 OOM killer 跟 PostgreSQL 搭在一起會出事:殺掉一個 backend 行程會弄壞共享記憶體區段,逼得 postmaster 得砍光所有連線並進入代價高昂的當機復原。作者建議開啟 vm.overcommit_memory=2 嚴格模式,把「晚發生又具破壞性的失敗,換成早發生但溫和的失敗」——超過 CommitLimit 的配置直接拒絕,讓單一查詢優雅失敗而不是拖垮整個資料庫。他們的公式是 overcommit_kbytes = 總記憶體 KB × 0.8 + 2×1048576,保留 20% 給核心結構、外加固定 2GB 給 sidecar 行程,涵蓋超過 99% 的機隊。