Architecture Decision Record

Active theme: Light

← 決策記錄範例

架構決策記錄:Rust 程式語言

決策編號:AR-001

決策標題:採用 Rust 程式語言

日期:2021 年 12 月 1 日

狀態:已接受

問題陳述

隨著我們繼續開發軟體應用,我們發現緩解潛在的安全漏洞和防止執行時錯誤變得越來越具有挑戰性。在使用 C 和 C++ 等現有程式語言時,我們仍不斷遇到緩衝區溢位、記憶體洩漏和導致應用崩潰的未定義行為等問題。我們需要一門提供記憶體安全保證、並且足夠高效以支援效能關鍵型應用的程式語言。

考量

有若干程式語言旨在解決現有的問題。其中,Rust 程式語言因其獨特的設計特性而受到開發者社群的極大關注。考量因素包括:

  1. 記憶體安全與安全性

  2. 效能與效率

  3. 社群支援與採用情況

  4. 學習曲線

  5. 工具與生態系統

  6. 與現有軟體系統的相容性。

約束

採用一門新的程式語言需要對開發人員進行再培訓,這需要時間和資源。將該語言整合到現有的開發工作流程中可能是一項挑戰。我們必須確保與現有系統的相容性,並避免破壞性變更,以保持連續性。

實施

  1. 我們的開發團隊將接受培訓,學習並熟悉 Rust 程式語言。

  2. 我們將用 Rust 建立一個新專案作為試用,以評估其相容性以及是否適合我們的開發目的。

  3. 我們將逐步把用 C 和 C++ 編寫的現有系統遷移到 Rust。

  4. 我們將與 Rust 社群合作,探索可用的工具和庫,以改進我們的開發工作流程。

  5. 我們將定期監控 Rust 的效能,並將其與現有程式語言的效能進行比較。

  6. 我們將採取長期的方法,在培訓、整合的成本與使用 Rust 的潛在收益之間取得平衡。

理由

我們採用 Rust,是因為它的獨特特性旨在提供記憶體安全和安全保證,同時保持效能和效率。Rust 強大的型別系統、借用檢查器(borrow checker)和記憶體安全理念,使其非常適合開發效能關鍵型和安全關鍵型應用。此外,Rust 擁有龐大的開發者社群,使我們能夠獲得支援我們開發工作流程的各種工具、庫和生態系統。雖然 Rust 有學習曲線,但我們相信採用 Rust 的收益超過成本,併為持續的成長和創新提供了絕佳的機會。

後果

  1. 採用 Rust 將需要在時間和資源上進行大量投入,用於培訓開發人員並將該語言整合到現有的開發工作流程中。

  2. 採用 Rust 可能會在一定程度上造成與現有系統的相容性問題,需要進行重構和修改。

  3. 採用 Rust 可能會吸引希望參與激動人心專案的 Rust 開發者,從而增加能夠為我們的專案做出貢獻的開發者數量。

  4. 與現有語言相比,採用 Rust 可能帶來效能、效率和安全性的提升。

  5. 最後,採用 Rust 有可能減少我們應用中的安全漏洞。

致謝:本頁由 ChatGPT 生成,隨後為清晰和格式而編輯。