後端工坊 2026 年 9 月 1 日

2026-09-01 — C++26 底定 SIMD 與 Executor,Contracts 遭喊卡;Rust 瘦身核心庫;Netdev 秀出核心內建 QUIC

primary=https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2026/p4043r0.html primary=https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2300r10.html primary=https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p1928r15.pdf primary=https://isocpp.org/files/papers/P2996R4.html primary=https://github.com/Rust-for-Linux/linux/issues/514 primary=https://github.com/rust-lang/libs-team/issues/833 primary=https://netdevconf.info/0x1A/sessions/talk/linux-quic-bringing-a-modern-secure-transport-into-the-kernel.html primary=https://netdevconf.info/0x1A/sessions/talk/kernel-shared-memory-socket-transport.html

C++26 SIMD 與 Sender/Receiver 拍板,Contracts 提案卻遭喊卡待審

ISO C++ WG21 論文 / isocpp.org CppCon 2026 · 2026-08-31

ISO C++ 委員會成員暨 JetBrains 工程師 Timur Doumler 於 8 月 31 日在 isocpp.org 公布 CppCon 2026 主題演講內容,聚焦C++26 草案中四項重大變更。同一天,Rust 專案的 Inside Rust 部落格發布 7–8 月專案管理報告,點名 Rust for Linux 團隊向上游提出的核心函式庫瘦身需求;羅馬舉行的 Netdev 0x1A 網路開發者大會影片與簡報也全數上線,展示核心內建 QUIC 與共享記憶體傳輸機制。

C++26:SIMD 與 Executor 底定,Contracts 命運卡在委員會

Doumler 整理出對日常開發影響最大的四項功能。sender/receiver 執行框架(P2300R10)已於 2024 年 6 月 WG21 聖路易全會通過併入工作草案,提供跨 CPU/GPU 非同步任務圖的標準詞彙,NVIDIA 已釋出參考實作 stdexecstd::simd(P1928R15)把原本停留在 Parallelism TS2 的資料平行型別正式併入標準,可攜式向量化程式碼不必再依賴編譯器專屬 intrinsics。

靜態反射提案(P2996R4)已於 2025 年 6 月索菲亞會議通過,允許編譯期查詢型別、列舉與成員中繼資料。相較之下,contract assertions(前置/後置條件與 assert 陳述式,P2900 系列)雖已於 2025 年 Hagenberg 會議併入草案,但 Adobe 工程師 Darius Neațu 在 2026 年 3 月發表的《Are C++ Contracts Ready to Ship in C++26?》(P4043R0)指出,委員會收到逾 20 則國家機構意見,質疑違約處理與強制執行語意的可靠性,並引用 P3911R2P4009R0P4005R0 等競爭提案仍未達成共識,建議延後至 C++29 或先發布白皮書。

提案論文編號目前狀態
sender/receiverP2300R102024/6 已通過併入
std::simdP1928R15已併入工作草案
靜態反射P2996R42025/6 已通過併入
ContractsP2900 / P4043R02025 併入,2026 遭提案喊停

Rust 為 Linux 核心瘦身 core 函式庫,數值轉型 API 重新設計

Inside Rust 的報告點名 Rust for Linux 團隊提出兩項具體上游需求。核心函式庫模組化追蹤議題(Rust-for-Linux/linux#514)指出,core crate 內建的 atomics、core::io、浮點運算與 Unicode 處理對核心開發是不必要的負擔——核心有自己的記憶體模型 LKMM,額外的 core::io 也會干擾 Klint 等靜態分析工具。issue 列出的具體需求包括:

  • 停用 atomics,改由 kernel crate 提供符合 LKMM 的版本
  • 停用 core::io 模組
  • 保證 TypeId 大小不超過 16 bytes(rust-lang/rust#148265)
  • cfg(no_128_bit) 停用 128-bit 整數格式化(rust-lang/rust#136385)

上游團隊已表態願意討論將 core 拆成多層設計,而非窮舉各種 cfg 組合。另一項需求來自 libs-team 的數值轉型 API 統整議題(rust-lang/libs-team#833),目標是為整數加寬(widen)與縮窄(narrow)轉型建立一致命名:縮窄轉型提供 saturating_narrowwrapping_narrowchecked_narrowstrict_narrowunchecked_narrow 五種語意變體,另有 cast_signed/cast_unsigned 處理正負號轉換,目前仍是討論中的提案。

Netdev 0x1A:核心內建 QUIC 與雙向零拷貝共享記憶體 socket

羅馬舉行的 Netdev 0x1A 兩場 Moonshot 議程分別展示核心層級 QUIC 傳輸與共享記憶體 socket 傳輸機制。Xin Long 主講的《Linux QUIC》(議程頁面)為核心新增 IPPROTO_QUIC socket 型別,將 RFC 9000 定義的串流管理、壅塞控制、遺失重傳、連線遷移放進核心,TLS 交握仍沿用既有 net/handshake 框架與使用者空間 tlshd 服務。

sock = socket(AF_INET, SOCK_STREAM, IPPROTO_QUIC);
connect(sock, addr, addrlen);
sendmsg(sock, &msg, 0);

socket API 維持 POSIX 慣例的 connect()/accept()/sendmsg()/recvmsg(),已透過 syzkaller 模糊測試與高速網路效能測試驗證,並有 Samba、curl HTTP/3 等真實應用案例。David Wei 主講的《Kernel shared memory socket transport》(議程頁面)則針對 splice/sendfile 只能在傳送端做到零拷貝的限制,提出建構在 AF_UNIX SOCK_SEQPACKET 之上、搭配 io_uring registered buffers 的共享記憶體傳輸層,目標讓收發兩端都零拷貝,取代各自實作的 boost::interprocess 之類函式庫,原型正準備提交 RFC。

原始來源:P4043R0 Contracts 存廢討論Rust-for-Linux #514Netdev 0x1A Linux QUIC


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