Linux 核心 Rust 驅動衝刺功能對等:rnull 補丁集追平 null_blk
LWN.net · 2026-08-28
Linux 核心開發者 Andreas Hindborg 提出一組編號 [PATCH 00/79]、標題為「block: rnull: complete the rust null block driver」的補丁系列,目標是讓以 Rust 撰寫的區塊裝置驅動程式 rnull 達到與既有 C 語言 null_blk 完全對等的功能。這項進度由 LWN.net 於 2026-08-28 報導,是 Rust for Linux 專案在區塊層(block layer)近期最完整的一次推進。目前一個精簡版的 rnull 已隨主線核心釋出,這批補丁要補齊剩餘的功能差距。
背景
null_blk 是核心內建的假區塊裝置,不真正寫入資料、盡快回覆完成,主要用來測試區塊層本身的排程與佇列邏輯,而非儲存媒介效能。根據 Rust for Linux 專案公開的統計,C 版 null_blk 過去合併的修補中有41% 屬於記憶體安全性問題,這是推動改寫為 Rust 版本的直接理由。選擇一個小而單純、非產品環境使用的驅動作為起點,也讓儲存社群能以較低風險評估核心 Rust 綁定的可用性。
核心改動
補丁集要補齊的功能包括多佇列(multi-queue)I/O 與多種完成模式、記憶體後端儲存、NUMA 節點指定與可設定的佇列參數,以及 zoned storage、discard 操作與頻寬節流等進階特性。整組實作使用完全安全(safe)的 Rust,所有不可避免的 unsafe 程式碼都被侷限在對 C API 的綁定包裝層內,不外露到驅動邏輯本身。
- multi-queue block I/O、可設定完成模式
- memory backing、NUMA 節點支援
- zoned storage、discard、頻寬節流
在此之前的 v6.19-rc5 開發週期中,rnull 已先合入 global tag sets、fault injection、zoned device 模擬與 poll queue 支援;更早的 v6.14-rc1 則是第一批子集功能進入主線的時間點。這次的 79 個補丁,是把過去逐步累積的功能串成一份對等於 C 版的完整實作。
影響範圍
Rust for Linux 專案公開的效能比較顯示,rnull 在多數設定下與 C 版 null_blk 的效能差異低於 2%,說明 Rust 抽象層在這類 I/O 密集路徑上並未帶來明顯開銷。對區塊層維護者而言,這批補丁也是評估「是否接受更多 Rust 驅動進入儲存子系統」的具體參考案例。
CppCon 2026 議程預告:當零成本抽象不再零成本
isocpp Blog · 2026-08-28
Bloomberg 資深軟體工程師 Steve Sorkin 將於 2026-09-17 在 CppCon 2026 發表題為「When Zero-Cost Abstractions Aren't Zero-Cost」的演講,議程已由 isocpp Blog 於 2026-08-28 公開。演講鎖定幾個被視為理所當然「零成本」的 C++ 抽象機制,說明它們在實務中其實可能悄悄產生效能代價。場次排在美東山區時間下午 2 點至 3 點,分類於效能與軟體設計主題之下。
核心改動
Sorkin 選擇的三個切入點是 ranges/views、型別抹除(type erasure)與配置器(allocators)。議程摘要指出零成本抽象「承諾在不犧牲效能的前提下寫出高階、具表達力的程式碼」,但實務上開發者經常在使用這些抽象時遇到未預期的效能落差。演講內容會拆解落差來源,包含最佳化器可見度、內聯邊界、配置行為與執行期彈性四個面向。
影響範圍
摘要特別點出「看似微小的設計選擇可能引入隱藏成本,而這些成本往往難以單靠程式碼審查發現」,這場演講設定給熟悉 ranges 或型別抹除慣用法、但尚未系統性檢視其底層代價的中高階 C++ 開發者。目前公開的仍只是議程與摘要,實際案例與量測數據要等 9 月正式演講後才會完整揭露。
靜態分析工具 PVS-Studio 8.00 發布:新增 JavaScript、TypeScript 與 Go 分析器
PVS-Studio Blog · 2026-08-28
靜態分析廠商 PVS-Studio 釋出 8.00 版,新增對 JavaScript、TypeScript 與 Go 三種語言的分析器,並同步推出 WebStorm 與 GoLand 的 IDE 外掛。此消息原始出自 PVS-Studio 官方部落格,isocpp Blog 於 2026-08-28 轉載摘要。這是該公司分析範圍首次從 C/C++/C#/Java 擴展到前端與 Go 生態系。
核心改動
新語言分析器各自搭配獨立 CLI 與一套基礎診斷規則:JavaScript/TypeScript 新增 40 條規則(V7001–V7040、V5801),Go 同樣新增 40 條(V8001–V8040、V5901),Java 端則新增一條 V6136。VS Code 擴充套件同步大幅改版,為所有新分析器加上可設定選項面板。
| 語言 | 新規則編號範圍 | 數量 |
|---|---|---|
| JavaScript / TypeScript | V7001–V7040, V5801 | 40 |
| Go | V8001–V8040, V5901 | 40 |
| Java | V6136 | 1 |
規格細節
C++ 陣營也有更新:團隊表示已將「MISRA 群組中的 16 條既有診斷規則適配到 MISRA C++ 2023 標準」,並在 Linux 端新增對 x86_64-pc-linux-gnu-c++ 編譯器的支援,同時以編譯監控與追蹤方式支援跨平台的 TI C2000-CGT 編譯器。設定檔改用新的 TOML 格式 pvs-settings.toml,MSBuild 專案下的 C++/C# 也拿到擴充的日誌記錄能力。
影響範圍
IDE 相容性門檻同步調整:VS Code 擴充套件最低版本從 1.74(2022 年 11 月)拉高到 1.100(2025 年 4 月),Qt Creator 外掛則新增 20.x 支援、同時終止對 14.x 的支援。對既有使用者而言,升級前需要先確認自己的 IDE 版本落在新的相容範圍內,否則外掛可能無法載入。