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. 同現有語言相比,採用可能帶來更佳嘅效能、效率同安全性。

  5. 最後,採用 Rust 有潛在好處,可以減少我哋應用程式中嘅保安漏洞。

鳴謝:呢頁由 ChatGPT 生成,之後為清晰度同格式而編輯。