Meta开源Rust编写的高性能构建系统Buck2

看来最近 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 添加或重新实现语言规则。

2017华为OV米的国产手机崛起,苹果三星你们怕了吗?2018年将会是什么情况呢?期待吗?
英伟达将从软银手中收购ARM_交易价值400亿美元
NB-IoT在2020年接连迎来“里程碑式”发展
智能手持PDA的定义及应用
极有可能用于纳米药物研究的工具:基于微流控技术的器官芯片
Meta开源Rust编写的高性能构建系统Buck2
东风日产郑州工厂,推动工厂发展迈上了新平台,展示了东风勇于拼搏的精气神
物联网设计四大独特挑战的解决方案
电源模块该如何选择,都有哪些注意事项
emui11是鸿蒙系统吗_有什么区别
宁德时代MBT技术落地 重卡及工程机械电动化大势所趋
自动驾驶摄像头与工业相机中的短波红外新秀
国六关于催化器氧传感器OBD监测的解决方案
晶体管与继电器输出的PLC有什么不同点
操作系统的核心内容,怎样学操作系统
欧洲的5G战争正在拉开帷幕
瑞能半导体关于第三代半导体的发展思量
我国将与各国进行机器人领域的合作发展推动全球机器人的进一步发展
t610与天玑700参数对比
5G时代对服务器的新要求有哪