後端工坊 2026 年 6 月 16 日

2026-06-16 — Iroh 1.0 金鑰定址、Linux 7.1 統計分析、GCC 16 診斷重構

primary=https://www.iroh.computer/blog/v1 primary=https://lwn.net/Articles/1077425/ primary=https://www.linuxteck.com/linux-kernel-7-1-release/ primary=https://gcc.gnu.org/gcc-16/changes.html primary=https://developers.redhat.com/articles/2026/04/28/gcc-16-improved-error-messages-sarif-output

Iroh 1.0:用加密金鑰取代 IP 位址的點對點網路函式庫

iroh.computer · 2026-06-15

Iroh 於 2026 年 6 月 15 日釋出 v1.0,這是一個以 Rust 撰寫的點對點網路函式庫,核心主張是「撥號金鑰,而非 IP」(Dial Keys, not IPs)。開發團隊 n0 computer 表示,在過去 30 天內,公開中繼節點已累計建立超過 2 億個端點,顯示出實際部署規模已相當可觀。

背景

傳統的 IP 位址與網路拓撲緊密耦合,裝置一旦移動或切換網路,位址就會改變;加上 NAT 和防火牆的普及,直連往往需要額外的穿透機制,應用層邏輯因此承擔了大量的位址管理負擔。Iroh 的設計哲學是讓加密公鑰本身成為可路由的位址——金鑰由持有人自行產生與控制,跨網路永久不變,不受 IP 轉換影響。

v1.0 之前,Iroh 已有多個 v0.x 版本,但 wire protocol 始終未穩定。此次 v1.0 明確承諾:在同一主版本內,端點保持跨語言的 wire 相容性,破壞性變更只會出現在主版本升級時。

核心改動

Iroh 的傳輸層以 IETF 標準草案為基礎,採用兩個關鍵機制確保連線品質。QUIC Multipath 讓單一連線內可維護多條路徑,並在網路狀況變化時熱切換,無需重建連線;QUIC NAT 穿透在連線細節全程加密的情況下完成穿透,不暴露路由資訊。此外,函式庫還支援本地優先(local-first)探索——即使無法連上公網,仍可在局域網內發現裝置。

在直連不可行時才回退到中繼節點,實際量測顯示 95% 的連線資料量透過裝置間直連傳輸。這與許多 P2P 解決方案預設走中繼的行為相反。傳輸層的設計允許替換底層媒介,目前已提及 Bluetooth Low Energy、LoRa、WiFi Aware、Tor 等選項。

影響範圍

語言綁定是 v1.0 的重要里程碑。除 Rust 原生 crate 外,Python、Node.js、Swift(iOS)、Kotlin(Android)均進入穩定 FFI 支援,API 文件釋出於 n0-computer.github.io/iroh-ffi/

版本支援政策也隨 v1.0 一同公告:v0.35x 的公開中繼支援延續至 2026 年 12 月 31 日,v0.9x 及各 RC 版本的支援於 2026 年 9 月 30 日結束。中繼流量受速率限制,以防止過度依賴中央基礎設施。中繼協定本身是開放的,有需要的團隊可自行部署中繼節點,不強制依賴 n0 computer 營運的公共節點。

原始來源:iroh.computer — Iroh 1.0: Dial Keys, not IPs


Linux 7.1 核心開發統計:新 NTFS 驅動、Intel FRED 預設啟用、逾 14 萬行程式碼遭刪

LWN.net · 2026-06-15

Linus Torvalds 於 2026 年 6 月 14 日釋出 Linux 7.1 核心,這是 7.x 系列的首個次版本。LWN.net 的 Jonathan Corbet 隨即於翌日(2026-06-15)發表開發統計分析,延續 LWN 自 2.6.x 時代以來對每個核心版本所做的週期性量化報告

背景

相較於上一個版本,Linux 7.0(2026 年 4 月 12 日釋出)的開發週期共計 14,251 次非合併提交,來自破紀錄的 2,362 位開發者,其中 489 人為首次貢獻。7.1 的合併視窗開啟前,linux-next 樹中已積累逾 12,000 筆待入主線的變更集,預示另一個繁忙開發週期。

從企業貢獻比例來看,7.0 週期中 Intel 以 1,540 筆提交(10.8%)居首,Google 以 1,075 筆(7.5%)次之,AMD 雖然提交數排第三(943 筆,6.6%),但在修改行數上以 139,764 行(17.2%)遙遙領先,主要來自 amdgpu 驅動的大規模改寫。

核心改動

重寫 NTFS 驅動7.1 最具代表性的變更:歷時四年開發的全新 in-kernel NTFS 實作,採用現代 iomapfolio 基礎設施,支援延遲分配(delayed allocation)並改善寫入效能,取代既有的舊版驅動。

處理器架構方面,Intel FRED(Flexible Return and Event Delivery)在 7.1 預設啟用。FRED 是一套重新設計的 CPU 例外與中斷處理機制,降低 Panther Lake 及後續 Intel 平台的上下文切換開銷。圖形子系統同樣有所更新:Intel Xe 驅動針對 Arc Battlemage 硬體進行效能優化,AMD GCN 1.1 APU 正式支援 AMDGPU DC(Display Core)路徑。

安全性方面,Landlock LSM 新增了對 UNIX domain socket 路徑名稱的存取控制;/proc/PID/mem 的預設權限收緊,限縮至正在進行 ptrace 追蹤的使用者;io_uring 獲得 BPF 支援,使 BPF 程式得以攔截並過濾 io_uring 操作,開拓可程式化非同步 I/O 的應用空間。

影響範圍

此版本同時進行了大規模的程式碼清理,刪除逾 14 萬行已棄用的程式碼,包含 x86 486 時代子架構支援(M486M486SXELAN)、已無實際硬體的舊式 PCMCIA 主控制器驅動,以及全部 ISDN 驅動。

破壞性變更方面有兩項需特別留意:UDP Lite 協定支援被完全移除;IPv6 不再允許以可載入模組(m)方式編譯,必須內建(y)或停用(n)。後者影響所有自行客製化核心配置的發行版維護者,須在升級前確認 .config 中的 CONFIG_IPV6 設定值。下一個版本 7.2 的 RC1 預計於 2026 年 6 月 28 日開始。

原始來源:LWN.net — Development statistics for the 7.1 kernelLinuxTeck — Why Linux Kernel 7.1 Is An Important Update


GCC 16 診斷系統翻新:階層式錯誤訊息預設啟用、SARIF 2.2 強化、實驗性 HTML 輸出

GNU Project / Red Hat Developer · 2026-04-30

GCC 16.1 於 2026 年 4 月 30 日釋出,首個穩定版本。這個版本最大的亮點在於編譯器診斷輸出的系統性重構:階層式錯誤訊息從 GCC 15 的實驗特性升格為預設行為,SARIF 格式朝 2.2 規格靠攏,並新增實驗性 HTML 診斷報告。Red Hat 的 David Malcolm 在官方部落格詳述了技術細節。

背景

C++ 的編譯錯誤訊息長期以來是開發者的痛點,尤其是模板相關的錯誤。編譯器要麼資訊不足,要麼輸出連篇的展開文字,難以找到實際出錯的位置。GCC 15 以實驗選項引入了階層式訊息,GCC 16 將其設為預設,並同步強化了 SARIF 的機器可讀格式,讓 CI 工具鏈能更精確地消化診斷資訊。

核心改動

階層式 C++ 錯誤訊息(Hierarchical Diagnostics)以縮排與項目符號呈現嵌套的錯誤上下文。當函式宣告(declaration)與定義(definition)的 const 修飾不符時,GCC 16 會明確指出「parameter 3 of candidate has type void*」vs「const void*」,並附上兩端的原始碼位置,取代過去籠統的「no declaration matches」訊息。若需還原舊行為,可加上:

-fno-diagnostics-show-nesting
# 或
-fdiagnostics-plain-output

SARIF 輸出方面,GCC 16 新增了數項結構化欄位,朝 SARIF 2.2 規格靠攏:

  • logicalLocations 陣列追蹤命名空間嵌套(如 foofoo::bar),以 parentIndex 表達包含關係,並附上完整限定名稱(如 foo::bar::baz::operator=)與連結器修飾名稱。
  • 控制流資料新增 throwcatchunwindsetjmplongjmp 五種 threadFlowLocation 類型,用以描述例外處理等非標準控制流。
  • 舊有的 -fdiagnostics-format=json 選項在 GCC 16 中被移除,需要機器可讀輸出的使用者應改用 SARIF。

實驗性 HTML 輸出以 -fdiagnostics-add-output=experimental-html 啟用,生成的報告包含語法高亮的程式碼片段、呼叫堆疊視覺化(以陰影效果呈現嵌套框架),以及可用 j/k 鍵瀏覽執行路徑的互動介面。加上 show-state-diagrams=yes 參數還可輸出記憶體堆疊的狀態轉換圖。

影響範圍

預設語言標準從 -std=gnu++17升至 -std=gnu++20,這是影響面最廣的非診斷改動。使用舊標準的專案若未明確指定 -std=,編譯行為可能改變。C++26 的幾個重要提案也以實驗性方式支援:

  • P2996R13 Reflection(需加 -std=c++26 -freflection
  • P2900R14 Contracts
  • P1306R5 Expansion statements
  • P3068R5 constexpr exceptions

靜態分析器(-fanalyzer)新增對 C++ Named Return Value Optimization(NRVO)與基本例外處理的支援,新旗標 -fanalyzer-assume-nothrow 允許關閉分析器對外部函式拋出例外的預設假設,以減少誤報。ARM 的 iWMMXT 擴充支援在此版本完全移除;AArch64 上已棄用的 -mpc-relative-literal-loads 選項則預告將在未來版本移除。

原始來源:GNU Project — GCC 16 Release Series ChangesRed Hat Developer — New features in GCC 16: Improved error messages and SARIF output


End of article
0
Would love your thoughts, please comment.x
()
x