後端工坊 2026 年 8 月 19 日

2026-08-19 — Mojo 編譯器開源、Fedora 淘汰 AF_ALG、CppCon 拆解 C++20 Awaiter 協定

primary=https://www.modular.com/blog/mojo-open-source primary=https://fedoraproject.org/wiki/Changes/Disable_CRYPTO_USER_API primary=https://cppcon2026.sched.com/event/2RT5r/awaiters-and-awaitables

Mojo 程式語言正式開源,編譯器與工具鏈以 Apache 2.0 授權釋出

Modular · 2026-08-18

Modular 於 2026-08-18 在官方部落格宣布,Mojo 程式語言的編譯器與完整工具鏈正式開源,原始碼已上傳至 modular/modular GitHub 儲存庫,授權條款為 Apache 2.0 with LLVM Exceptions。這距離 Mojo 於 8 月上旬釋出 1.0 版、正式進入原始碼穩定期僅約一週。此次釋出範圍不只是先前已開源的標準函式庫,還包含數十萬行以 Mojo 撰寫的核心運算 kernel 程式碼。

背景

Mojo 自 2023 年發表以來,官方一直採取「社群開放、編譯器封閉」的策略:標準函式庫自 2024 年起就接受外部貢獻,但編譯器本體長達四年維持閉源狀態。Modular 執行長為 Swift/LLVM 架構師 Chris Lattner,這次開源被視為 Mojo 從實驗性專案走向正式語言的最後一塊拼圖,也呼應了近期 1.0 版釋出後對穩定 ABI 與原始碼相容性的承諾。

核心改動

開發者現在可以直接從原始碼建置整個編譯器,官方採用 Bazel 作為建置系統,指令如下:

./bazelw run --config=build-mojo KGEN:mojo -- run hello.mojo

對不想自行編譯的使用者,也保留了 --config=prebuilt-mojo 參數,可直接下載每日建置的二進位版本。Modular 表示編譯器與工具鏈的外部貢獻流程將於今年底前公告細節,目前程式碼僅開放閱讀與建置,尚未正式開放 PR 合併。

影響範圍

  • 標準函式庫(stdlib):已開源,維持原有貢獻管道
  • 編譯器本體與工具鏈:本次首度開源,可建置但貢獻機制未定
  • 核心運算 kernel:以 Mojo 撰寫的數十萬行程式碼一併釋出

對需要在特定硬體(GPU/TPU/ASIC)上做客製化編譯後端的團隊而言,能直接檢視並修改 MLIR 相關的程式碼路徑,而非只能透過標準函式庫層級的擴充來間接影響底層行為。

原始來源:Modular 官方部落格modular/modular GitHub


Fedora 45 啟動核心加密使用者空間 API 限縮計畫,AF_ALG 走向淘汰

Fedora Project Wiki (Change Proposal) · 2026-08-18

Fedora 開發者 Peter Robinson 與 Justin Forbes 於 2026-08-18 提出 Change Proposal,計畫在 Fedora Linux 45 中限縮 CRYPTO_USER_API(即核心的 AF_ALG 使用者空間介面)的可用範圍,此案已通過 FESCo 核准(issue #3667)。這是配合上游 Linux 核心逐步淘汰 AF_ALG 的第一階段動作,上游計畫在 7.3 版核心中加入正式淘汰標記。

背景

AF_ALG 讓使用者空間程式可以直接呼叫核心內建的加密演算法實作,但上游核心開發者認為這個介面攻擊面大、維護成本高,實際使用價值有限,因此決定逐步移除。多數現代應用早已改用 OpenSSLlibgcrypt 等使用者空間加密函式庫,AF_ALG 的活躍使用者其實不多。

核心改動

Fedora 這次的第一階段做法不是直接停用整個介面,而是把存取範圍限縮到已知的使用者名單,明確排除名單之外程式的存取,藉此讓官方掌握誰還在依賴這個介面。目前被列為豁免、可繼續使用 AF_ALG 的套件包括:

  • cryptsetup(TrueCrypt/VeraCrypt 相容與核心加密效能測試)
  • iwd(無線網路守護行程)
  • libkcapi(供 dracut 與核心建置流程使用)

除了上述名單內的套件,其餘未申報的第三方程式若仍呼叫 AF_ALG,將在後續階段被要求遷移,否則直接失去存取權限。

影響範圍

對一般終端使用者而言,由於已知使用者都在豁免名單內,短期內不會有可感知的行為變化。但對維護自訂加密工具、或曾直接呼叫 socket(AF_ALG, ...) 的開發者來說,現在就該規劃改用使用者空間函式庫,以免日後上游正式移除介面時程式失效。

原始來源:Fedora Change Proposal WikiLWN.net 報導


CppCon 2026 議程搶先看:Mateusz Pusz 拆解 C++20 Awaiter 協定

CppCon 2026 Schedule · 2026-08-18

ISO C++ 官方部落格於 2026-08-18 預告,C++ 委員會成員 Mateusz Pusz 將在 CppCon 20262026-09-16 09:00–10:00 MDT)發表議程「Awaiters and Awaitables」,內容直接對不熟悉 coroutine 底層機制的開發者解說 co_await 背後究竟發生了什麼事。議程頁面已公開於 CppCon 2026 排程系統

核心改動

議程聚焦在 awaiter 協定的三個成員函式:await_readyawait_suspendawait_resume,並示範如何從零手寫一個 awaiter,把既有的非同步介面包裝成可以直接 co_await 的型別。內容也會涵蓋:

  • 對稱轉移(symmetric transfer):讓串接的非同步操作維持扁平呼叫堆疊,避免堆疊持續累積
  • operator co_await:不修改既有型別即可讓它變成 awaitable
  • await_transform:依 coroutine 執行環境客製化 awaitable 的轉換方式
  • 搭配 std::stop_token 實作可取消(cancellation-aware)的 awaiter

影響範圍

Pusz 是 ISO C++ 委員會投票成員,自 2017 年起全勤參與會議,並提出了 P2008(variable template template parameters,已納入 C++26)。這場議程不涉及新提案或標準變動,而是針對已在 C++20 標準內、但多數開發者只會用不懂原理的 coroutine 機制做系統性拆解,對維護跨執行緒或跨 I/O 非同步函式庫的團隊會有直接幫助。

原始來源:CppCon 2026 ScheduleISO C++ 官方部落格


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