NEO.K / PLDST程式語言設計師風格譜系
編號PLDST-022
版本v1.0
日期2026-07-30
作者Neo.K
狀態公開版/第三部設計師與共同體正式個案研究

下載 PDF ↓回到論文索引 ↗

Graydon Hoare 與 Rust 共同體:安全系統語言如何從個人原型轉為制度工程

摘要

Rust 經常被描述為 Graydon Hoare 創造的一門安全系統程式語言,其 Ownership、Borrow checker 和無 Garbage collector 的 Memory safety 解決了 C/C++ 長期問題。這種敘述抓住 Rust 的創始起點,卻不能準確解釋今日 Rust。

Hoare 在 2006 年以個人專案開始 Rust,早期 Compiler 以 OCaml 實作,語言包含後來被移除的 Typestate、Object、Green thread、Garbage-collected pointer 及多種 Pointer/Channel 機制。Mozilla 於 2009 年開始投資,團隊和 Servo 使 Rust 接受瀏覽器引擎級系統壓力;2012–2015 年間,Ownership、Borrowing、Trait、Lifetime、Cargo、Error model、Compiler infrastructure 及 Library 被大量重新設計。Hoare 於 2013 年離開 Rust 的日常開發,Rust 1.0 於 2015 年發布時已是多人重構後、與初始原型顯著不同的語言。[R1][R2]

Hoare 在 Rust 穩定十週年的回顧中直接反對把 Rust 歷史寫成單一靈感故事。他將 Rust 描述為大量使用者、語言設計者、Compiler 實作者、教育者、機構、企業和志願者共同建立的技術基礎設施;他也承認 2006–2009 年的「Baby Rust」幾乎沒有型別檢查、產生很慢的程式,只能在極少平台運作。到 1.0 時,它已被徹底重寫,幾乎難以辨認為同一語言。[R1]

因此,本篇故意不使用單純的「Graydon Hoare 個人風格個案」格式,而把研究單位分成兩層:

  1. Graydon Hoare 的原始問題與早期方向
  2. Rust 共同體將方向轉成可穩定依賴之制度的方式

Rust 的原始問題是:

如何建立一門能撰寫可靠基礎設施、保留 C/C++ 等級控制和效能,又能在編譯期阻止常見 Memory safety 與 Concurrency 錯誤的語言?

其解法不是單一 Borrow checker,而是完整責任鏈:

Ownership+Borrowing+Lifetimes+Algebraic data types+Traits+Unsafe boundary+Compiler diagnostics+Cargo ecosystem\boxed{ \text{Ownership} + \text{Borrowing} + \text{Lifetimes} + \text{Algebraic data types} + \text{Traits} + \text{Unsafe boundary} + \text{Compiler diagnostics} + \text{Cargo ecosystem} }

Ownership 將每個 Value 的管理責任指派給 Owner;Borrowing 允許在不移交 Ownership 的情況下暫時存取;Mutable reference 的排他性降低 Alias+Mutation 交互;SendSync 將 Thread transfer 和共享能力放入型別關係;unsafe 則保留 Raw pointer、FFI、Allocator、Kernel 及 Runtime 必須使用的低階操作,但把證明義務明確集中到受審查邊界。[R3][R4][R5]

然而,Rust 的真正歷史創新不只在技術模型。它還建立:

Rust 1.0 後,已穩定功能原則上持續支援;需要小幅不相容表面變化時,以 Opt-in Edition 隔離,同一依賴圖內不同 Edition 的 Crate 仍須互操作;重大變更則以 RFC、社群討論、團隊共識、實作及穩定化程序逐步進入。[R6][R7][R8]

本文將 Rust 歷史分成七個相位:

  1. 個人原型期:Hoare 以舊語言研究思想尋找可靠系統語言;
  2. Mozilla 投資期:小型原型轉成團隊和 Servo 測試平台;
  3. Pre-1.0 激進重寫期:大量特徵移除、Ownership 收斂及 Compiler 自舉;
  4. 1.0 穩定契約期:Stable channel、Compatibility、Cargo 和生態承諾;
  5. RFC/Team 聯邦治理期:設計權由創始者轉成公開制度;
  6. Edition 與長期演化期:局部 Opt-in 修正而不分裂生態;
  7. Foundation/Leadership Council 基礎設施期:企業資助、法律財務、規格、工具及維護接班。

本文核心判斷為:

Graydon Hoare 創造了問題框架與第一原型,Rust 共同體創造了今日可被依賴的 Rust。\boxed{ \text{Graydon Hoare 創造了問題框架與第一原型,} \quad \text{Rust 共同體創造了今日可被依賴的 Rust。} }

Rust 的深層風格不是單一人物品味,而是一種制度化責任配置:

將記憶體和並發證明義務提前給型別系統,將不可避免低階風險集中給 Unsafe 邊界,將語言演化風險交給公開治理和生態測試。\boxed{ \text{將記憶體和並發證明義務提前給型別系統,} \quad \text{將不可避免低階風險集中給 Unsafe 邊界,} \quad \text{將語言演化風險交給公開治理和生態測試。} }

這種配置同樣有代價。Borrow checker 會拒絕部分實際安全、但 Compiler 無法證明的程式;Ownership、Lifetime、Trait、Async、Pin、Unsafe invariant 和 Compiler error 形成高學習門檻;RFC、Team、Review、Crater 和 Release infrastructure 需要大量持續勞動。Hoare 自己在十週年回顧中提醒,許多貢獻者會因疲憊或其他需求離開,他本人也只持續約七年;可靠基礎設施的最大問題之一是維護接班,而不是功能創始。

因此,本篇最終判定不是「Graydon Hoare 是 Rust 所有設計的作者」,而是:

Hoare 是安全基礎設施問題的原型設計者;Rust 共同體則將原型重寫為一套技術、社會及治理共同保證的公共系統。

關鍵詞: Graydon Hoare、Rust、Ownership、Borrowing、Memory safety、Unsafe、RFC、Edition、Cargo、共同體治理、PLDST


第一部分 研究邊界與歸因方法

一、為何標題包含共同體

Rust 1.0 前已經歷大幅重寫;Hoare 於 2013 年離開日常開發;Ownership、Borrow checker、Trait、Cargo、Edition、Async、MIR、NLL、Diagnostics 及現代 Governance 涉及大量不同作者。

若仍把全部內容寫成「Graydon Hoare 的設計風格」,就會重犯 PLDST-004 所批判的創始人歸因偏誤。


二、Hoare 可直接歸因的部分


三、共同體可直接歸因的部分

包括但不限於:

具體功能仍需逐案歸因。


四、Hoare 自己的歸因修正

2025 年回顧中,Hoare明確說:

這是本篇多主體寫法最重要的一手依據。


第二部分 相位一:個人原型

五、問題不是單純取代 C++

Hoare 的目標可概括為:


六、從舊研究語言取材

早期 Rust 受到多種較舊語言及研究影響,包括:

Hoare 曾把方向描述為「過去的技術來拯救未來」。這不是逐項直接複製,而是拒絕「系統語言只能沿 C 家族累加」的歷史宿命。


七、早期 Rust 與今日差異

Baby Rust 曾具有:

因此:

Rust2008Rust1.0Rust2026Rust_{2008} \neq Rust_{1.0} \neq Rust_{2026}

八、個人原型的真正價值

原型證明:

原型不需成為最終規格才算成功。


第三部分 Mozilla、Servo 與團隊化

九、Mozilla 投資

Mozilla 於 2009 年開始投資 Rust,使個人專案變成團隊;Hoare 說投資立即使團隊規模增為數倍,並在後續年份持續擴張。[R1]


十、Servo 作為壓力測試

Servo 從 2012 年起作為 Rust 的關鍵使用者,要求語言處理:

語言不再只由小型 Demo 驗證。


十一、使用者與設計者重疊

Rust/Servo 團隊可以:

LanguageChangeServoExperimentCompilerFeedbackLanguageRevisionLanguageChange \rightarrow ServoExperiment \rightarrow CompilerFeedback \rightarrow LanguageRevision

在短週期內共同演化。


十二、企業投資的雙重作用

優勢:

風險:

2020 年後 Foundation 的形成部分回應資助多元及法律基礎問題。


第四部分 Pre-1.0:允許大幅破壞

十三、為何可快速移除

在 1.0 前:

因此可以移除:


十四、刪除也是設計成果

Rust 的成熟不只是新增 Ownership,而是:

DesignProgress=Addition+Removal+UnificationDesignProgress = Addition + Removal + Unification

能夠刪除早期功能,避免所有實驗永久化石化。


十五、Ownership 的收斂

Rust 最終把多個問題統一到 Ownership:

但 Ownership 並非 Hoare 一人瞬間設計完整;型別研究者、Compiler 工程師和使用者持續改進其形式及人體工學。


十六、Compiler 自舉與 LLVM

Rust 由 OCaml Bootstrap 逐步轉成 Rust Compiler,並使用 LLVM 作後端。

這帶來:


第五部分 Ownership 作為責任分配

十七、Owner

Rust Book 將 Ownership 定義為管理程式記憶體的一組規則,由 Compiler 檢查,且 Ownership 本身不增加 Runtime 成本。[R3]

基本規則可概括為:

  1. 每個 Value 有一個 Owner;
  2. 同一時間只有一個 Owner;
  3. Owner 離開 Scope 時,Value 被 Drop。

十八、Move

Move 使 Ownership 顯式轉移。

它阻止:


十九、Borrow

Reference 允許暫時使用而不取得 Ownership。

Borrowing 的核心分離是:

UseOwnUse \neq Own

二十、共享與可變排他

一般規則:

多個 Immutable references
或
一個 Mutable reference

它限制危險組合:

Alias+Mutation+ConcurrencyAlias + Mutation + Concurrency

二十一、Lifetime

Lifetime 表達 Reference 不得活得比被參照資料更久。

Compiler 會推導大部分 Lifetime;複雜介面需要 Annotation。


二十二、Drop/RAII

資源隨 Owner Scope 結束釋放:

Rust 繼承並型別化 Resource acquisition/destruction 傳統。


第六部分 Memory safety 與 Concurrency 同一化

二十三、早期視為兩個問題

Rust Book 回顧,團隊最初把 Memory safety 和 Concurrency 視為不同挑戰;後來發現 Ownership/Type system 可共同處理兩者。[R4]


二十四、Send

Send 表示 Ownership 可以安全移到另一 Thread。


二十五、Sync

Sync 表示對該型別的 Reference 可以安全跨 Thread 共享。


二十六、Library concurrency

Thread、Channel、Mutex、Atomic 等多數機制在 Library,而 SendSync 及 Ownership 保證提供語言級邊界。

這使新的 Concurrency abstraction 仍可由 Crate 建立。


二十七、Fearless 不是沒有錯誤

Rust 可阻止:

不能自動阻止:


第七部分 Unsafe:安全包絡的內部邊界

二十八、為何必須有 Unsafe

系統需要:

若語言不能實作自身基礎,就不能作一般系統語言。


二十九、Unsafe 不是關閉全部檢查

unsafe 只開放特定操作:

一般型別、Borrow 及語法規則仍存在。


三十、證明責任轉移

Safe Rust 使用者依賴:

PublicSafeAPIInvariantsHeldPublicSafeAPI \Rightarrow InvariantsHeld

Unsafe 作者必須證明:


三十一、局部化

理想模式:

小型 Unsafe core
+
安全抽象 API
+
大量 Safe caller

這使低階風險攤銷。


三十二、制度仍在補規格

Hoare 的十週年文章指出,Rust 1.0 當時甚至沒有充分說明 Unsafe 的正確性邊界;RustBelt、Miri、Formal model、Reference 和後來 Specification 工作才持續補足。[R1]

安全語言並非 1.0 即完成所有形式基礎。


第八部分 Cargo 與整體開發體驗

三十三、語言安全不足以被採用

系統語言還需要:


三十四、Cargo

Cargo 逐步成為:

它降低「每個專案自造 Build system」的碎片化。


三十五、Cargo 不是 Hoare 單人設計

Cargo 由後期 Rust 團隊和社群建立,並在 1.0 前後快速成熟。

Hoare 2025 年回顧指出,1.0 時 Cargo 仍只有約六個月歷史,遠未達今日成熟程度。[R1]


三十六、整體安全供應鏈

Cargo 提高可用性,也建立新責任:

語言安全不自動等於 Package 安全。


第九部分 從自由變更到 1.0 契約

三十七、1.0 的制度含義

Rust 1.0 不表示語言已完成全部功能,而表示:


三十八、Stability without stagnation

原則:

Stable 功能長期支持
+
新功能持續加入

不能用頻繁破壞換取進步。


三十九、Feature gate

新功能先在 Nightly/Unstable:

只有經 Stabilization 才進入一般使用者基線。


四十、Channel

它將實驗、預覽和公共承諾分開。


第十部分 RFC 與聯邦治理

四十一、RFC 的起因

RFC 0002 說明,早期自由加入功能適合快速發展,但成熟平台需要更有紀律、一致和受控的路徑。[R6]


四十二、RFC 要求

重大改變需描述:


四十三、不是直接多數票

官方 Governance 表示,重大決策從 RFC 開始,任何人可參與討論,目標是建立對 Tradeoff 的共同理解;最終由負責團隊依共識程序推進。[R7]


四十四、Team 聯邦

現代 Rust 具有:

不同專業擁有不同決策權,避免單一 Core team 處理所有細節。


四十五、聯邦代價

制度複雜度是技術成熟的成本。


第十一部分 Edition:局部修正歷史

四十六、為何需要 Edition

穩定承諾阻止直接:

Edition 允許 Crate Opt-in。


四十七、不分裂生態

最重要規則:

Crateedition ACrateedition BCrate_{edition\ A} \leftrightarrow Crate_{edition\ B}

必須無縫互操作。[R8]

因此 Edition 不是 Python 2/3 式整個生態 Fork。


四十八、遷移工具

Cargo/Lint 可自動修改大量表面語法。

但工具不保證所有 Macro、Generated code 或語義情況完全自動。


四十九、Skin-deep 限制

因跨 Edition 互操作要求,Edition 通常只能處理表面及局部語義,不能重建完全不相容的核心型別世界。


第十二部分 Foundation 與基礎設施治理

五十、Mozilla 退出後的風險

2020 年 Mozilla 組織變動顯示:


五十一、Rust Foundation

Foundation 提供:

它不直接取代 Rust Project 的全部技術治理。


五十二、Project 與 Foundation 分離

理想分工:

Rust Project:語言、Compiler、Library、Technical governance
Rust Foundation:法律、財務、基礎設施及資助

實際仍需持續協調權力和責任。


五十三、Leadership Council

現行官方治理由 Leadership Council 協調整體成功,成員來自 Top-level teams;它取代過去部分 Core team 結構。[R7]

這再次證明 Rust Governance 仍在演化,而非 2015 即固定。


第十三部分 Compiler 診斷作為安全介面

五十四、拒絕程式只是第一步

Borrow checker 若只說「錯」,使用者無法建立正確心智模型。

Rust 因此投入:


五十五、Compiler 是教學者

因語言把更多錯誤提前,Compiler 必須承擔:

Detection+Localization+Explanation+RepairGuidanceDetection + Localization + Explanation + RepairGuidance

否則安全成本全轉成挫折。


五十六、診斷仍有極限

Trait、Lifetime、Async 和 Generic error 仍可能:

好的錯誤訊息是長期工程,不是一次設計完成。


第十四部分 風格時間相位

五十七、個人原型期

問題:基礎設施語言難以安全使用
策略:綜合舊研究語言概念建立 Rust

五十八、Mozilla/Servo 期

問題:原型不足以建造真實 Browser
策略:Full-time team、LLVM、Servo dogfooding

五十九、Pre-1.0 重寫期

問題:早期功能過多且模型未收斂
策略:刪除、統一、Ownership、Compiler 自舉

六十、1.0 契約期

問題:使用者無法依賴快速變動語言
策略:Stable channel、Compatibility、Cargo

六十一、RFC/Team 期

問題:單一創始者/自由流程不能治理成熟平台
策略:RFC、Team、Consensus、Feature gate

六十二、Edition 期

問題:穩定承諾阻礙局部修正
策略:Opt-in、跨 Edition 互操作、Cargo migration

六十三、Foundation/Infrastructure 期

問題:企業資助、法律及維護接班不可依單一公司
策略:Foundation、Leadership Council、多元投入

第十五部分 PLDST 風格指紋

六十四、Graydon 原始問題 framing

如何把功能語言和研究型別系統中的安全能力,帶入真正需要控制 Layout、效能及並發的基礎設施程式?


六十五、共同體後期 framing

如何讓語言的安全、工具、相容和治理保證,在數十年及數千名貢獻者中仍可持續?


六十六、價值優先序

VRust(Reliability,Performance,MemorySafety,ConcurrencySafety,Control,Ergonomics,Compatibility,CommunityInfrastructure)V_{\text{Rust}} \approx ( Reliability, Performance, MemorySafety, ConcurrencySafety, Control, Ergonomics, Compatibility, CommunityInfrastructure )

六十七、核心—擴張偏好

核心:

擴張:


六十八、顯式—推導偏好

明示:

推導:


六十九、效率—可讀性偏好

不使用 GC 作一般基礎,保留:

同時投入高階 Iterator、Pattern、Trait 和 Tooling。


七十、安全—自由偏好

Safe Rust 提供強保證;Unsafe Rust 保留系統底層能力。

真正判準不是有無 Unsafe,而是:


七十一、相容性偏好

Pre-1.0:可激進破壞。
Post-1.0:Stable without stagnation。
Edition:局部 Opt-in 修正。
生態:Crater/Regression test。


七十二、治理偏好

由:

個人原型

轉向:

企業團隊

再轉向:

RFC+聯邦 Team+Foundation+全球共同體

第十六部分 反例與限制

七十三、Borrow checker 會拒絕安全程式

Compiler 只能接受能被其分析證明的程式。

使用者有時需:


七十四、Memory safety 不等於完整安全

Rust 不能自動保證:


七十五、Unsafe 生態是 Trusted Computing Base

Standard Library、Allocator、OS binding、Crate 中的 Unsafe 共同構成 TCB。

Safe caller 依賴它們正確。


七十六、治理本身會耗盡人

RFC、Review、Release、Moderation、Documentation 和 Infra 需要長期人力。

Hoare 明確提醒貢獻者 Burnout 和接班是未來核心問題。[R1]


七十七、Rust 不是 Hoare 原型的線性實現

今日 Rust 的許多最核心形式和工具在 Hoare 離開後形成。

不能用今日結果回寫創始者在 2006 年已完整預見。


七十八、共同體也不是單一人格

Rust 社群包含:

「Community decided」需要追問是哪個 Team、RFC、投票、Consensus 或 Foundation 行動。


七十九、制度成熟不表示沒有治理危機

Rust 歷史曾經歷 Team 衝突、Leadership 重組、Moderation 問題和資助轉變。

本文分析制度能力,不將其理想化成無摩擦共同體。


第十七部分 設計決策語料

時期 問題 決策 複雜度去向 主體
2006–09 安全基礎設施語言缺口 Rust 私人原型 Compiler/設計者 Hoare
2009+ 原型缺乏資源與真實測試 Mozilla 投資 團隊/公司 Mozilla+早期團隊
2012+ 語言需驗證瀏覽器規模 Servo 使用者/Compiler Rust/Servo 團隊
2012–15 核心模型過多 刪除 GC、Typestate 等,收斂 Ownership Type system 多位設計者
2014 自由變更不適合成熟平台 RFC 0002 公開程序 Core community
2015 使用者需要穩定 Rust 1.0 Compatibility/Release infra Rust Team
2015+ 新功能與舊碼衝突 Channel、Crater、Stabilization Tool/Review 多 Team
2018+ 需要局部不相容修正 Edition Cargo/Migration Edition WG
2021+ 資助及法律不可依單一公司 Rust Foundation Institution 多公司/Project
當代 Core team 結構需擴展 Leadership Council 聯邦治理 Top-level Teams

第十八部分 人物/共同體原型判定

八十、Graydon Hoare 原型


八十一、Rust 共同體原型


八十二、不適合的簡單標籤

不應只稱:

Graydon Hoare 單人發明 Borrow checker
Mozilla 單獨創造 Rust
無 GC 的 C++ 替代品
絕對安全語言
社群民主直接投票語言

較精確的描述是:

一個由個人原型提出安全系統語言方向,再由研究者、企業、志願者、工具作者和治理制度反覆刪除、重寫、穩定及維護的公共基礎設施。


第十九部分 統一評價

八十三、最重要的技術連續性

從原型到今日:

可靠性不能只依靠程式設計者記住規則\boxed{ \text{可靠性不能只依靠程式設計者記住規則} }

應把可檢查責任放入語言和 Compiler。


八十四、最重要的技術不連續性

今日 Ownership/Trait/Cargo/Edition Rust 與早期 Typestate/Object/GC Rust 差異巨大。

成功來自方向延續,不是功能保留。


八十五、最重要的制度連續性

Rust 不斷把私人或小組責任轉成公共基礎:


八十六、最重要的創始者修正

Hoare 的後期歷史觀把「我創造了一個 Idea」改寫為:

很多人共同投資、維護和接班,才使一個早期 Idea 成為可靠 Infrastructure。


第二十部分 結論

Graydon Hoare 的歷史功勞既不能被共同體敘事抹除,也不能被創始者神話無限放大。

他做出的關鍵貢獻是:

  1. 辨識基礎設施語言的可靠性缺口;
  2. 拒絕把安全與系統效能視為必然對立;
  3. 從舊研究語言吸收被主流遺忘的機制;
  4. 建立足以吸引 Mozilla 投資和團隊加入的原型;
  5. 接受原型被大幅改造;
  6. 在後期主動把成功歸於廣泛共同體和制度。

Rust 共同體的關鍵貢獻是:

  1. 把 Ownership、Borrowing 和 Trait 收斂成可實用模型;
  2. 以 Servo 和真實系統驗證;
  3. 建立 Cargo 和開發者體驗;
  4. 在 1.0 建立相容契約;
  5. 以 RFC 和 Team 分配設計權;
  6. 以 Edition 修正局部歷史而不分裂生態;
  7. 以 Unsafe 邊界保留底層能力;
  8. 以 Crater、CI 和 Release pipeline 檢驗變更;
  9. 以 Foundation 和 Leadership Council 支持長期接班;
  10. 以教育、錯誤訊息和工具把安全成本轉成可學習介面。

本文的 PLDST 雙層判定為:

Hoare: Safe-Infrastructure Prototype Designer\boxed{ \text{Hoare: Safe-Infrastructure Prototype Designer} }

以及:

Rust Community: Institutional Reliability Engineering Collective\boxed{ \text{Rust Community: Institutional Reliability Engineering Collective} }

Rust 的核心優勢是:

其核心代價是:

最終原則為:

可靠性必須同時被編碼進語言、工具與制度\boxed{ \text{可靠性必須同時被編碼進語言、工具與制度} }

只建立 Ownership 不足;只建立友善 Compiler 不足;只建立 RFC 也不足。Rust 的真正成果是三層共同成立:

TechnicalSafety+EvolutionSafety+InstitutionalContinuity\boxed{ TechnicalSafety + EvolutionSafety + InstitutionalContinuity }

這也使 Rust 成為 PLDST 中最重要的反創始者偏誤案例之一:

一門語言可以由一個人開始,但當它真正成為基礎設施後,最值得分析的設計者已不再只是個人,而是能讓技術在創始者離開後仍持續修正、穩定和接班的共同體制度。


附錄 A PLDST 雙層個案卡

初始設計者:Graydon Hoare
共同體:Rust Project/Mozilla/Rust Foundation/全球貢獻者
主要語言/制度:Rust、Cargo、RFC、Edition、Teams、Foundation
核心時期:2006–至今
主要問題:基礎設施效率、安全和並發可靠性分裂
主要策略:Ownership、Borrow、Trait、Unsafe boundary、Compiler evidence
複雜度去向:Type system、Compiler、Tool、Governance、Institution
責任去向:安全規則交給 Compiler,低階證明交給 Unsafe,演化交給制度
主要保護對象:基礎設施開發者、使用者和長期生態
主要限制:學習、Unsafe TCB、制度成本、Burnout、規格持續補完
歸因信心:高

附錄 B 來源與參考文獻

[R1] Graydon Hoare, “10 Years of Stable Rust: An Infrastructure Story,” Rust Foundation, 2025.
— 多主體基礎設施敘事、Baby Rust、Mozilla 投資、1.0 前重寫、Cargo/Edition/RFC/貢獻者和接班。

[R2] Graydon Hoare, Rust historical talks, prehistory archive and interviews.
— 2006 個人原型、早期語言影響、OCaml Compiler 和初期目標;回顧性材料需與 Repository 交叉校對。

[R3] Steve Klabnik, Carol Nichols, Chris Krycho and Rust Community, The Rust Programming Language, Ownership chapters.
— Ownership、Move、Borrow、Lifetime 和無一般 GC 的 Memory management。

[R4] The Rust Programming Language, Concurrency chapters.
— Ownership 與 Concurrency 的統一、Send/Sync、Thread、Channel 和 Shared state。

[R5] Rust Reference and Rustonomicon, Unsafe Rust.
— Unsafe operation、Safety invariant、Raw pointer、FFI 和 Safe abstraction 邊界。

[R6] Rust RFC 0002, “RFC Process,” 2014.
— 從早期自由演化轉向一致、受控及共識式重大功能流程。

[R7] Rust official Governance page and Rust Forge.
— Leadership Council、Top-level Teams、RFC 及現代聯邦治理。

[R8] Rust Edition Guide and Rust 2021 Edition plan.
— Stability without stagnation、Opt-in Edition、跨 Edition Crate 互操作及自動遷移。

[R9] Rust 1.0 release announcement and official release history.
— 2015 年 5 月穩定發布、Channel 及穩定承諾。

[R10] Rust Foundation official history and governance materials.
— 2021 後的法律、財務、基礎設施和企業多元支持。

[R11] Rust RFC repository, Team repositories, Crater and Release infrastructure documents.
— 生態回歸、Stabilization、Release train 和多主體演化。

[R12] RustBelt, Miri and Formal Specification materials.
— Unsafe 語義、形式安全與規格持續補完;屬共同體及研究機構成果,不歸於 Hoare 個人。


附錄 C PLDST 標記

[T-P] Personal prototype phase
[T-M] Mozilla/Servo phase
[T-R] Pre-1.0 rewrite phase
[T-S] Stable-contract phase
[T-F] RFC/federated-team phase
[T-E] Edition phase
[T-I] Foundation/infrastructure phase

[S-O] Ownership responsibility
[S-B] Borrowed access
[S-U] Unsafe boundary
[S-C] Compiler-enforced safety
[S-R] RFC governance
[S-E] Edition compatibility
[S-I] Institutional continuity


---

# 附錄 D 第二輪史實、技術與治理校對紀錄

## D.1 個人原型與 Mozilla 投資

第二輪重新核對 Graydon Hoare 2025 年 Rust 穩定十週年回顧:

- Hoare 於 2006 年開始私人原型;
- Mozilla 於 2009 年開始投資;
- 投資使原本的單人專案真正形成 Team;
- Servo 自 2012 年起成為重要壓力測試;
- Hoare 把自己的初始 Compiler 描述為數萬行、接近無資助個人專案可負擔的上限;
- 2006–2009 的 Baby Rust 幾乎沒有成熟 Type checker、效能很差且平台範圍極窄;
- 到 2015 年 1.0 時已被多人徹底重寫。

本文因此沒有使用「2006 年 Rust 已具有今日 Ownership/Borrow checker」的回寫敘事。

---

## D.2 Hoare 離開與 1.0 的時間邊界

歷史資料支持:

- Hoare 約於 2013 年離開 Rust 的日常核心開發;
- RFC Process 於 2014 年建立;
- Rust 1.0 於 2015 年 5 月 15 日發布;
- Cargo、Borrow checker 人體工學、Compiler infrastructure、Library 及大量語言細節在 Hoare 離開前後由多人持續完成。

本文將 Hoare 定位為 Initial author/Prototype designer,而不稱其為 1.0 全部機制的唯一設計者。

---

## D.3 Ownership 的保證範圍

第二輪直接核對 Rust Book:

- Ownership 是由 Compiler 檢查的 Memory-management rule set;
- 一般 Ownership 機制本身不增加 Runtime overhead;
- Borrowing 分離使用權和 Ownership;
- `&mut` 的排他性限制 Alias+Mutation;
- Lifetime 用於確保 Reference 不超過被參照資料的有效期。

這些規則不表示每個資源永遠只有一個 Conceptual stakeholder;`Rc`、`Arc`、Interior mutability、Mutex 等型別可建立受控共享。

---

## D.4 Concurrency 保證的精確邊界

Rust Book 說明:

- Rust 團隊後來發現 Ownership 和 Type system 可同時支援 Memory safety 及許多 Concurrency safety;
- `Send` 表示型別值可安全跨 Thread 轉移;
- `Sync` 表示 Reference 可安全跨 Thread 共享;
- Message passing、Shared state、Mutex 等方案都可以使用;
- Data-race freedom 不等於不存在 Deadlock、Livelock、Starvation 或所有高階 Race condition。

本文因此使用「多數 Data race 在 Safe Rust 中被型別規則阻止」,而不寫成所有並發錯誤被消除。

---

## D.5 Unsafe 的兩種證明義務

第二輪直接核對 2026 年 Rust Reference:

- `unsafe fn`、`unsafe trait`、`unsafe static` 等可**建立額外安全條件**;
- `unsafe {}`、`unsafe impl`、`unsafe extern` 等可表示程式設計者聲稱已**履行安全條件**;
- Unsafe block 只開放特定受限操作,不會取消全部型別、Ownership 或語法規則;
- Undefined behavior 在 Unsafe code 中仍是錯誤;
- 安全包裝必須確保 Safe caller 無法觸發 UB;
- Rust Reference 仍提醒 Unsafe 的完整形式語義模型持續發展。

本文因此把 Unsafe 定位為 Proof-obligation boundary,而不是「關閉安全模式」。

---

## D.6 Rust 2024 的 Unsafe 明示

現行 Reference 規定:

- 2024 Edition 的 External block 必須明示 `unsafe extern`;
- 某些影響 Symbol/Section 的 Attribute 需以 `#[unsafe(...)]` 標記;
- 此演化使 Safety obligation 更靠近實際宣告和外部邊界。

這是 Rust 共同體在 Stable/Edition 框架內持續改善 Unsafe 可審計性的例子,不是 Hoare 初始原型的直接功能。

---

## D.7 RFC 0002 的制度目的

第二輪直接核對 RFC 0002:

- 2014 年建立 RFC Process;
- 目標是為重大 Language/Standard Library 變更提供一致、受控的進入路徑;
- 早期自由加入功能適合探索,但成熟平台需要更強自律;
- RFC 合併表示設計成為 Active、可實作及繼續驗證,不保證自動穩定;
- 最終仍需實作、Tracking issue、Feature gate、Review 和 Stabilization。

本文沒有把 RFC 寫成直接多數投票或提案合併即永久規格。

---

## D.8 Edition 的相容邊界

第二輪核對 Edition Guide:

- Edition 是每個 Crate 的 Opt-in 選擇;
- 不同 Edition Crate 必須無縫互操作;
- 遷移通常由 Cargo/Lint 大量自動化;
- 為維持跨 Edition 互操作,變更一般較「Skin-deep」;
- 自動遷移不保證覆蓋所有 Macro、Generated code 或語義情況。

本文因此沒有把 Edition 描述成 Python 2/3 式生態分裂,也沒有宣稱它能承載任何核心不相容重設。

---

## D.9 2025 十週年數據的時間邊界

Hoare 的 2025 年文章提供當時快照,包括:

- 1.0 後數十萬次變更;
- 約 6,700 名 Repository Contributor;
- 數千份 RFC;
- 多個 Edition;
- 對龐大 Public crate 生態進行 Release regression testing。

這些數字會繼續變動。

本文只用它們證明 Rust 已成為大規模公共基礎設施,不把數字當成 2026 年永久固定值。

---

## D.10 現行 Rust 版本與治理

截至 2026 年 7 月 30 日:

- Rust 官方網站列出的穩定版本為 1.97.1;
- 官方 Governance 頁列出 Leadership Council、Compiler、Dev tools、Infrastructure、Language、Library、Moderation 等 Top-level teams;
- Rust Project 由多 Team 和多貢獻者開發;
- Rust Foundation 提供法律、財務、商標、基礎設施和資助支持,但不等同所有技術決策機關。

版本資訊是時間敏感快照,不作長期人物風格核心依據。

---

## D.11 規格的持續補完

第二輪核對官方 Learn/Reference 及 Hoare 十週年回顧:

- Rust Book 是教學文本;
- Rust Reference 比 Book 詳細,但官方仍提示它不完全等同最終形式規格;
- Unsafe 的正確性邊界由 Reference、Rustonomicon、Miri、RustBelt、Formal specification 等多條工作持續補完;
- 1.0 的 Production stability 不表示完整形式語義於 2015 年即全部完成。

本文因此把 Rust 的可靠性理解為持續演進的技術—制度組合,而不是一次性證明完畢。

---

## D.12 Foundation 與 Project 的權責

Rust Foundation:

- 擁有並保護 Rust/Cargo 商標;
- 支援 Crates.io、整合測試等基礎設施;
- 提供資助和法律組織。

Rust Project:

- 透過 Leadership Council 和各技術 Team 處理語言、Compiler、Library、Tool 及政策。

兩者可能互相依賴,但不應被寫成單一中央法人完全控制語言。

---

## D.13 創始者歸因的最終校準

本文的歸因結論與 Hoare 自己 2025 年的修正一致:

```text
Hoare:
問題框架、初始原型、早期方向與團隊形成

Mozilla/Servo:
資助、專職工程、真實壓力測試

Rust 共同體:
Ownership 收斂、Compiler、Cargo、RFC、1.0、Edition、
Diagnostics、Foundation 與長期演化

這是概括層次;每項具體功能仍需在個別研究中查核作者、Reviewer、實作者及決策 Team。


D.14 PLDST 雙層原型邊界

下列名稱是本文分析原型:

Hoare:安全基礎設施原型設計者
Rust 共同體:制度化可靠性工程共同體

它們不是官方頭銜。

「Institutional reliability」表示 Memory safety、Compatibility、Release、Governance、Tooling 和 Funding 共同支持可靠性,不表示 Rust Project 的所有制度已無爭議或已達最終形態。