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