C++:The Documentary 上映——四十年語言演化紀錄
herbsutter.com · YouTube 首映 · 2026-06-04
《C++: The Documentary》於 2026 年 6 月 4 日在 YouTube 正式上映(youtube.com/watch?v=lI7tMxzSJ7w),片長約 1 小時 8 分鐘,以 24 個章節追溯 C++ 從 1979 年 Bell Labs「C with Classes」到今日的四十年演化歷程。影片以 Herb Sutter 引用的數據作為開場:C++ 在過去 3.5 年增加了 90% 的使用者,是全球前四大語言中成長最快的。
受訪者陣容
影片收錄了 15 位業界人士的訪談,包含語言設計與工具鏈的核心人物:
- Bjarne Stroustrup(C++ 設計者,Bell Labs)
- Alexander Stepanov(STL 設計者)
- Anders Hejlsberg(C#、TypeScript 創造者)
- Brian Kernighan(Bell Labs,《The C Programming Language》共同作者)
- Chris Lattner(LLVM、Clang、Swift 創造者)
- John Romero(Doom、Quake 共同創造者)
- Gabriel Dos Reis(Microsoft 工程師)
歷史脈絡
影片按時間軸結構化,涵蓋幾個關鍵轉折點。C++ 在 1990 年代中期進入標準化,ISO/IEC 14882:1998(C++98)建立了語言規範基礎,同時 STL 的引入讓泛型程式設計從概念變為標準工具箱。影片稱 2000 年代初期為「C++ winter」——Java 和 C# 在企業應用開發中取得主導地位,C++ 的學習曲線陡峭與未定義行為問題受到廣泛批評。
轉機出現在 C++11:move semantics、lambda、auto 型別推斷、std::thread 等功能使語言從根本上現代化,吸引了新一代開發者。遊戲(Unreal Engine)與金融交易是 C++ 從未失去主導地位的兩個領域,John Romero 和金融工程師的訪談呈現了實際的使用場景。
影響範圍
這部紀錄片的意義不僅在於記錄,更在於時機——C++23 剛完成、C++26 正在標準化中,Rust 則持續挑戰 C++ 在系統程式設計領域的地位。Chris Lattner(LLVM/Clang 作者)和 Anders Hejlsberg(後來設計了 TypeScript)的出現讓影片的視角超越 C++ 本身,觸及語言演化的更廣泛脈絡。對於理解現代工具鏈(Clang、LLVM IR、module system)的設計決策,影片提供了有用的歷史背景。
jujutsu v0.42.0:切換至 mimalloc、evolution history 自動 rebase
GitHub · jj-vcs/jj · 2026-06-04
版本控制系統 jujutsu(jj)發布 v0.42.0,最值得注意的底層改動是從預設記憶體配置器切換到 mimalloc——一個由 Microsoft Research 開發、針對多執行緒高頻分配最佳化的配置器,在 Git 操作密集場景(大量物件操作、平行 fetch)下可觀察到效能改善。
核心改動
Evolution history 自動生成是此版本最重要的功能:執行 jj git fetch 時,系統根據 change ID 自動生成 evolution history,並在遠端父節點被重寫(rewrite,如 force-push)時自動 rebase 本地的後代修訂版本。這解決了 jujutsu 在與 force-push 頻繁的遠端倉庫互動時需要手動偵測並重新排列歷史的痛點,讓 jj 的工作流在混合使用 Git 的團隊中更為流暢。
jj show 現在接受複數個 revision 引數,依序展示,行為類似 git show rev1 rev2 rev3,方便在不切換 revision 的情況下快速審查多個修訂版本。新指令 jj util backend name 讓腳本可以程式化識別當前倉庫使用的 commit backend(native jj backend 或 git backend)。Diff editor 引入 edit-invocation-mode: file-by-file 設定,讓 vimdiff 等逐檔案工具能正確運作。
破壞性變更
此版本移除多個已棄用的設定選項與指令 flag:
git.auto-local-bookmark設定選項已移除git.push-new-bookmarks設定選項已移除jj commit、jj describe、jj git push、jj metaedit的已棄用選項已移除
使用 jj 包裝腳本的自動化工具應在升級前核查 breaking changes 清單,尤其是書籤(bookmark)相關操作的輸出訊息也有變更,可能影響依賴文字解析的腳本。