看來最近 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
+關注
關注
91文章
39766瀏覽量
301370 -
Meta
+關注
關注
0文章
322瀏覽量
12453 -
編譯
+關注
關注
0文章
694瀏覽量
35158 -
Rust
+關注
關注
1文章
240瀏覽量
7585
原文標題:Meta開源Rust編寫的高性能構建系統
文章出處:【微信號:OSC開源社區,微信公眾號:OSC開源社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
如何在NVIDIA CUDA Tile中編寫高性能矩陣乘法
2025開放原子開發者大會旋武開源社區Rust分論壇成功舉辦
2025開放原子開發者大會旋武社區Rust分論壇即將啟幕
RusT-Thread:基于Rust面向資源受限嵌入式設備的操作系統的實踐 | 技術集結
NVIDIA Spectrum-X 以太網交換機助力 Meta 和 Oracle 加速網絡性能
SGM260320:SSD 系統供電的高效低耗 PMIC
TPS65263 4.5V 至 18V 輸入電壓、3A/2A/2A 輸出電流降壓轉換器數據手冊
TPS65263-Q1 4.0V-18V Vin、3A/2A/2A 三通道同步降壓轉換器數據手冊
TPS65262-2 4.5V-18V Vin、3A/1A/1A 三通道同步降壓轉換器數據手冊
TPS65263-1Q1 4.0V 至 18V 輸入、三通道 3A/2A/2A 同步降壓轉換器數據手冊
使用樹莓派構建 Slurm 高性能計算集群:分步指南!
Meta開源Rust編寫的高性能構建系統Buck2
評論