io_uring 換上無鎖 MPSC 佇列,砍掉 task_work 的排序開銷
LWN.net · 2026-07-15
Linux 7.2 核心將把 io_uring 的 task_work 基礎架構換成無鎖(lockless)的多生產者單消費者(MPSC)FIFO 佇列,由 Jens Axboe 主導,取代原本以 llist 實作的 DEFER_TASKRUN 本地佇列與一般的 tctx 佇列。
背景
舊實作的 llist 是後進先出(LIFO)的無鎖鏈結串列,多個生產者可以直接推入節點,但消費者要處理前得先做一次 O(n) 的整表反轉,才能還原成先進先出順序。堆積工作一多,反轉本身就成了明顯開銷,還得靠額外的重試佇列處理反轉期間新進的項目。
核心改動
新方案採用 Dmitry Vyukov 提出的 intrusive MPSC 演算法:生產者只需一次原子交換就能把節點接上佇列尾端,消費者逐一取出、不必整批反轉。節點內嵌在物件本身(intrusive),多生產者端在多數情況下是 wait-free。套用到兩條佇列後,重試清單整個移除,tctx 的 fallback task_work 可直接執行,每個 context 各自的 fallback 機制也隨之簡化。
.NET MAUI 行動端收斂到單一執行環境:CoreCLR 取代 Mono
Microsoft DevBlogs · 2026-07-14
從 .NET 11 Preview 6 起,針對 net11.0-android、net11.0-ios、net11.0-maccatalyst 建置的 MAUI 應用會自動改用 CoreCLR,原本切換執行環境的 Mono 選項屬性已移除;GA 排定 2026 年 11 月,Mono 僅保留給 Blazor WebAssembly。
技術動機
CoreCLR 是 ASP.NET Core 與雲端服務共用的執行環境,行動端過去因啟動時間與體積長期依賴 Mono。這次轉換的關鍵是統一診斷工具鏈:換成 CoreCLR 後 dotnet-trace、dotnet-counters 可直接用在行動裝置,Visual Studio/VS Code 除錯體驗對齊桌面端。Android 端也同步啟用「trimmable type map for Android interop」,作為未來 NativeAOT 支援的基礎。
數字
iOS、Mac Catalyst 上 CoreCLR「普遍比 Mono 快」;Android 上啟動時間與 App 體積落在 Mono 的 10% 誤差內。微軟要求開發者在 Preview 6 就以 .NET 10 為基準實測,回報落差。
原始來源:Microsoft DevBlogs - CoreCLR Progress and the Mono Timeline for .NET MAUI
FreeBSD 16 送走最後一塊 GPL 程式碼:dialog 退場
Phoronix · 2026-07-16
FreeBSD 16 的原始碼樹已移除 base system 中最後一塊 GNU GPL 授權程式碼——文字介面工具 dialog。變更合併於 commit 134a4c78d070f8c4ea43a060a7ae28d22ac39558,一併砍掉整個 GNU 子目錄,FreeBSD 16.0 正式版預計 2027 年 12 月釋出。
背景與改動
FreeBSD base system 以 BSD 授權為主,過去因缺乏對等替代品混入少數 GPL 工具。安裝程式先前已改用 bsddialog;剩下唯一還用 dialog 的 dpv 工具已停用並退役。dialog 移除票券於今年 2 月開出,合併主線後 GNU 子樹整個砍除,base system 不再有任何 GPL 程式碼殘留。
影響
bsddialog 提供相容介面,一般使用者不受影響。對下游打包者與商用衍生版而言,授權清單進一步單純化,base system 完全落在 BSD 授權之下。
原始來源:Phoronix - FreeBSD 16 Retires The Last Of Its GPL Code From Its Base System