Ubuntu 採用 Rust 的意義是什麼 (★ 100 分)
作者從 Rust Nation 的閉幕主題演講〈Rust Adoption At Scale with Ubuntu〉出發,借用《跨越鴻溝》(Crossing the Chasm) 與技術採用生命週期 (Technology Adoption Life Cycle) 的框架,討論 Rust 是否已從早期採用者 (early adopters) 走向早期主流 (early majority)。他指出 Rust 的普及程度高度取決於領域:在 Amazon 內部,Rust 已被視為建置大規模資料平面 (data plane) 與資源感知代理程式的合理選擇,但仍有人覺得它只適合少數「很會寫底層」的團隊,不一定適合一般應用;相對地,在安全關鍵軟體(safety-critical software,失效可能造成傷亡或重大損失)產業,多數公司仍在觀望,讓先行者先把流程、工具鏈與認證路徑走通。
他認為要「跨越鴻溝」,關鍵是出現能讓保守團隊安心的「參考客戶」(reference customers):看到與自己處境相近的組織成功導入,才會願意把新技術當成生產力提升,而不是冒險賭注。Canonical(Ubuntu 背後公司)採用 Rust 的意義就在這裡:他們把 Rust 納入少數主力語言組合,並用在新的「基礎型」工作上,逐步取代 C/C++ 與部分 Python;同時以金援與聲譽「帶頭試錯」,贊助 sudo-rs(`sudo` 的 Rust 重寫版,`sudo` 是以更高權限執行指令的工具)、ntpd-rs(NTPD,Network Time Protocol daemon,網路校時服務)與 uutils 的 coreutils(Linux/Unix 基本指令工具組)等可直接替換(drop-in)的記憶體安全 (memory-safe) 工具,讓既有工作流程改動最小。作者也提醒,當新一波採用者湧入,Rust 專案需要更會「聽需求」:例如重新檢視「標準函式庫 (standard library, std) 要保持很小」的傳統,思考以更務實的方式提供更完整、可依賴的套件組合(他提到的「battery packs」概念,與 2016 年曾被反彈的 Rust Platform「延伸標準函式庫」提案有相似之處),並且在開源協作上避免小圈圈與「口耳相傳規矩」把人趕走,因為真正的擴張往往靠同理心與耐心。
作者也把話題拉到「採用如何變成投入」:對開源而言,投入不只是一筆錢,也包括人力貢獻、修 bug、維護工具鏈與跨組織的協作關係;而資金常常反而來自「還沒正式導入、但正在評估」的公司,內部推動者手上有預算,想先補齊導入門檻(table stakes)。Hacker News 的留言在情緒上多半認同「值得嘗試、但希望別人先幫忙踩雷」;有人拿 ripgrep(`rg`,搜尋工具)等 Rust 工具的成功當作「已經過實戰」的證據,也有人擔心把 coreutils、`sudo` 這類累積數十年修補與邊界情況處理的老工具重寫後,短期很難把細節全部補齊,因此主張重寫前要先建立足夠的測試;但也有回應指出,事後補測試常常補不回原本隱含的行為語意,而 Rust 的型別系統與借用檢查器(borrow checker)能直接消掉大量記憶體與資源管理類漏洞,本身就是重寫的巨大收益。
留言區也把討論拉向更尖銳的工程取捨。有些人質疑 Rust 缺乏正式規格(specification)與長期相容承諾;也有人反駁 Rust 早有 editions(版本世代)與相對穩定的升級經驗,但同時補充:即使語言層面穩定,std 新增方法仍可能改變「方法解析」而讓舊程式無法編譯,並舉例 Rust 1.93 新增 ` Vec::into_raw_parts ` 可能與既有 trait 方法衝突。最大的一串爭論則集中在 ABI(Application Binary Interface,應用二進位介面)與動態連結:有人主張若大量邊界都只能走 C ABI,就仍充滿指標與手動記憶體管理,整體安全提升有限;另一些人則認為 Rust 不該追求像 C++ STL(Standard Template Library,C++ 標準範本函式庫)那樣的 ABI 凍結,否則會綁死效能與實作改進。相關延伸還包括:多個 Rust 動態函式庫可能各自攜帶 std 造成記憶體膨脹、更新機制對發行版下載量的衝擊;以及更實務的相容性與治理問題,例如有人回報 rust-coreutils 的 ` dd ` 行為導致 NVIDIA CUDA 安裝腳本無法解壓;也有人對 uutils/coreutils 採 MIT 授權而非 GPL(GNU General Public License,GNU 通用公共授權)感到反感,擔心 Canonical 可能在企業版本疊加封閉修補,讓「可直接替換」的策略在政治與信任層面引發新摩擦。
👥 129 則討論、評論 💬
https://news.ycombinator.com/item?id=47125286