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 營運的公共節點。
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 實作,採用現代 iomap 與 folio 基礎設施,支援延遲分配(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 時代子架構支援(M486、M486SX、ELAN)、已無實際硬體的舊式 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 kernel、LinuxTeck — 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-outputSARIF 輸出方面,GCC 16 新增了數項結構化欄位,朝 SARIF 2.2 規格靠攏:
logicalLocations陣列追蹤命名空間嵌套(如foo→foo::bar),以parentIndex表達包含關係,並附上完整限定名稱(如foo::bar::baz::operator=)與連結器修飾名稱。- 控制流資料新增
throw、catch、unwind、setjmp、longjmp五種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
constexprexceptions
靜態分析器(-fanalyzer)新增對 C++ Named Return Value Optimization(NRVO)與基本例外處理的支援,新旗標 -fanalyzer-assume-nothrow 允許關閉分析器對外部函式拋出例外的預設假設,以減少誤報。ARM 的 iWMMXT 擴充支援在此版本完全移除;AArch64 上已棄用的 -mpc-relative-literal-loads 選項則預告將在未來版本移除。
原始來源:GNU Project — GCC 16 Release Series Changes、Red Hat Developer — New features in GCC 16: Improved error messages and SARIF output