看來最近 Meta 的工程師是一點都沒有閑著,前兩天剛開源 AI 圖像分割模型,這不就又發布了名為 Buck2 的開源構建系統。
Buck2 是一個已經在 Meta 內部使用了一段時間的大型構建系統,目前 Meta 有數千名開發人員正在使用該構建系統,每天執行數百萬次的構建。在 Meta 的內部測試中,Buck2 完成構建的速度是 Buck1 的 2 倍。
雖然 Buck2 跟 Buck1 使用了相同的名稱,也是 Buck1 構建系統的繼任者,但前者并不是后者簡單的升級版,Buck2 用 Rust 完全重寫(Buck1 用的 Java),目標是使構建速度更快、更有效。
正因如此,Buck2 有一個單獨的 GitHub 倉庫和單獨的官方網站,為的就是跟 Buck1 進行區分。
我們自己的內部分析表明,當 Buck2 執行構建時,工程師能夠生成更多有意義的代碼,我們希望更廣泛的行業也能從中受益。
Buck2 的設計基于以下原則:
完全分離了核心規則和特定于語言的規則,將語言規則從核心中分離出來意味著規則更容易改變和理解。Buck2 的核心是用 Rust 編寫的,它的語言規則(比如如何構建 C++)是用 Starlark 編寫的。這種分離與 Buck1(所有規則都寫在核心中)和 Bazel(C++/Java 寫在核心中)形成對比。
構建系統消除了許多類型的錯誤并增加了并行性。
規則 API 被設計為包含先進的性能特征,以及動態依賴特征。
開源版本與 Meta 的內部版本幾乎相同,唯一替換掉的部分是工具鏈(指向 Meta 編譯器的內部副本)和遠程執行(指向 Meta 內部服務器) —— 兩者都提供了開源替代品。還發布了與內部使用完全相同的所有規則。
Buck2 的編寫是為了與遠程執行相結合,能夠在遠程機器上運行操作,使用與 Bazel 相同的 API,并且一直在用 Buildbarn 和 EngFlow 測試遠程執行。
Buck2 還可以與虛擬文件系統集成。
上述所有這些更改都是想要幫助工程師和開發者減少等待時間,將更多時間用于迭代他們的代碼。
目前 Buck2 為以下這些語言附帶了對應的規則:Assembly、C/C++、Erlang、Go、Haskell、Java、JavaScript、Julia、OCaml、Python 和 Rust。開發者可以使用 Starlark 腳本語言,向 Buck2 添加或重新實現語言規則。
-
AI
+關注
關注
87文章
30212瀏覽量
268453 -
Meta
+關注
關注
0文章
259瀏覽量
11352 -
編譯
+關注
關注
0文章
654瀏覽量
32811 -
Rust
+關注
關注
1文章
228瀏覽量
6574
原文標題:Meta開源Rust編寫的高性能構建系統
文章出處:【微信號:OSC開源社區,微信公眾號:OSC開源社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論