Git 2.55 將 Rust 列為預設建置依賴,並引入 Hook 平行執行
git-scm.com / Collabora Blog · 2026-06-26
Git 2.55 即將正式發布,帶來兩項重大變更:Rust 支援首次在 Makefile 與 Meson 兩套建置系統中同步預設啟用,以及透過 ar/parallel-hooks(commit 0a6acf0d)實現的 Hook 平行執行機制。這是 Git 邁向將 Rust 設為強制依賴(預計 Git 3.0)三步計畫中的第二步,2.55-rc0 已於 2026 年 6 月 11 日釋出。
背景
Git 自 2.49 起開始在 contrib/ 引入選擇性 Rust 元件;2.52 時 Meson 可自動偵測,但 Makefile 預設仍關閉。進入 2.55,兩套建置系統均改為預設啟用 Rust,未安裝 Rust 工具鏈的環境建置將直接失敗,除非明確設定停用旗標。此設計反映 Git 開發者對長期維護性的取向:Rust 程式碼已在 performance-critical 路徑上展現優勢,官方計畫以漸進方式擴大佔比。
核心改動:Rust 建置整合
在 Makefile 中,原有的 WITH_RUST=YesPlease 旗標更名為 NO_RUST,語意從「選擇加入」翻轉為「明確退出」。CI 管線若未預先安裝 Rust toolchain,升級後將立即中斷。Meson 用戶可透過 meson configure -Drust=disabled 停用。Git 3.0 將移除所有退出選項,使 Rust 成為無條件必要依賴。
- 階段一(
2.52):Meson 自動偵測;Makefile 預設關閉 - 階段二(
2.55):兩套建置系統預設開啟,可用NO_RUST退出 - 階段三(
3.0):強制依賴,退出選項移除
核心改動:Hook 平行執行
新的 Hook 平行執行機制允許同一事件下的多個 Hook 同時執行。平行化採用選擇加入(opt-in)設計,以避免破壞現有腳本的預期執行順序。全域並發數可透過 hook.jobs 設定,設為 -1 時自動使用所有可用 CPU 核心;命令列亦可用 git hook run -j N 即時覆寫。
[hook "linter"]
event = pre-push
command = ~/bin/linter --cpp20
parallel = true
[hook "no-leaks"]
event = pre-push
command = ~/bin/leak-detector
parallel = true
[hook]
jobs = 2pre-commit 與 prepare-commit-msg 等具有順序依賴的 Hook 因安全性考量,不支援平行化。該設計由 Jeff King(Peff)協同完成,並處理了跨平台的競態問題。
影響範圍
使用自動化建置系統(GitHub Actions、GitLab CI、Jenkins 等)且未安裝 Rust 的專案需在升級前手動加入 toolchain 安裝步驟。若建置環境為 Alpine 或其他最小化映像,需特別注意 musl 版本相容性。平行 Hook 機制對大型 monorepo 在 pre-push 階段有明顯加速效益。
systemd v261 釋出:雲端 IMDS 仲介、Kexec 熱切換與 OS 安裝工具
GitHub · systemd/systemd · 2026-06-19
systemd v261 於 2026 年 6 月 19 日正式釋出(release commit de9dbc37),帶來三項主要新功能:雲端實例元資料服務(IMDS)子系統、核心層級的 Live Update Orchestration(LUO)kexec 切換支援,以及文字模式作業系統安裝工具 systemd-sysinstall。
背景
各程式在 AWS EC2、Azure、GCP 等雲端平台上存取 IMDS 時,過去需各自實作 HTTP 查詢邏輯,既重複又難以統一管理授權。同樣地,無縫核心更新(kexec)在狀態保留上長期缺乏標準化支援。v261 以 Varlink IPC 架構統一這兩個面向,同時引入 systemd-sysinstall 封裝既有分割、憑證管理與系統管理工具為單一安裝流程。
核心改動
IMDS 仲介服務(systemd-imdsd)透過本地 Varlink IPC API 將雲端元資料公開給本機程序,支援 AWS EC2、Azure、GCP、Hetzner、Oracle、Tencent、Alibaba、Vultr、Scaleway 等主流雲端,辨識依據為 hwdb 中的 SMBIOS 資訊。PID1 同步支援核心的 LUO/KHO 介面,設定 FileDescriptorStorePreserve=yes 後 FD Store 可跨 kexec 保留,達成服務在核心熱切換後的無縫恢復。
systemd-stub 新增 Boot Secret 機制,從 EFI 變數衍生持久性金鑰材料,透過 /.extra/boot-secret 在 initrd 中交付,作為無實體 TPM 系統的備援加密素材。systemd-vmspawn 新增機密運算支援(AMD SEV-SNP,透過 --coco= 旗標),並提供 EFI NVRAM 持久化與直接核心啟動功能。
規格細節與破壞性變更
systemd-nspawn的--user=選項更名為--uid=(舊形式保留但顯示棄用警告)- Varlink enum 欄位由破折號改為底線(例:
tty-force→tty_force),影響ExecInputType、ExecOutputType、ProtectHome等型別 - 最低 musl 版本要求提升至
1.2.6 - 移除 udev 資料庫版本 0 支援,不再支援從 v247 以前版本直接升級
- libgnutls、libcurl、libcryptsetup 等多個函式庫改以
dlopen()動態載入 - DHCP 伺服器的
BindToInterface、RelayTarget等選項棄用,改用新的[DHCPRelay]區塊
影響範圍
從 v247 之前版本升級的用戶需特別注意 udev 資料庫相容性問題。使用 Varlink API 的外部工具需因應 enum 命名變更更新解析邏輯。Cloud init 相關工具可考慮整合 systemd-imdsd 取代直接 HTTP IMDS 查詢,統一透過 Varlink 存取以獲得一致的跨雲端介面。
原始來源:GitHub systemd/systemd v261 Release Notes、Lennart Poettering's Mastodon Stories
C++23 完全指南草稿版上線,涵蓋 Deducing This、std::expected 等核心特性
Leanpub / isocpp.org · 2026-06-23(書稿更新至 2026-06-24)
C++ 標準委員會成員 Nicolai Josuttis 於 2026 年 6 月 23 日發布其著作《C++23 - The Complete Guide》的草稿版電子書(Leanpub),目前完成度約 80%,共計 350 頁。書中附有可實際執行的範例程式,購買者可免費取得後續所有更新版本,正式精裝版將於全書完稿後另行出版。
背景
C++23(正式規格號 ISO/IEC 14882:2024)已於 2024 年發布,並在 2026 年 3 月被 C++26 取代。儘管標準已定案,涵蓋全部特性、附有實戰範例的系統性參考書籍仍相對稀缺。Josuttis 是《The C++ Standard Library》與《C++ Templates》的作者,此系列延續至 C++23。本書以已具備 C++20 知識的讀者為目標受眾。
核心改動與涵蓋特性
Deducing this(明確物件參數)是本書重點之一,允許成員函式在範本中以一致方式處理 const/非 const 多載,並簡化 CRTP 等複雜類別階層的實作。std::expected<T, E> 提供結構化錯誤回傳機制,並支援 monadic 操作鏈(.and_then()、.transform()),是對 std::optional 的語意強化。
- 標準函式庫模組:
import std;與import std.compat; - 格式化輸出:
std::print()、std::println() - 多維下標運算子:
a[i, j, k]取代巢狀a[i][j][k] - Range-based
for迴圈的暫存物件存活期修正 std::mdspan:多維陣列視圖,無需額外記憶體配置std::generator<>:基於協程的惰性序列產生器std::stacktrace:執行期堆疊追蹤(基於 Boost.Stacktrace)- Unicode 強化:命名字元跳脫
\N{CAT FACE}、分隔式跳脫\x{C0DE} - 靜態 lambda、靜態呼叫運算子、
static constexpr於constexpr函式中
影響範圍
本書定價為 $27.90(最低)至 $39.90(建議)。尚未納入的特性將在後續更新中補齊,購買者自動取得全部未來版本。對於需要遷移既有 C++17/C++20 程式庫的工程師,std::expected 的採用路徑與模組化標頭的整合策略是本書的重要參考點。