0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

OSC开源社区 来源:OSC开源社区 2023-04-14 17:04 次阅读

看来最近 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
    AI
    +关注

    关注

    87

    文章

    26909

    浏览量

    264701
  • Meta
    +关注

    关注

    0

    文章

    183

    浏览量

    11186
  • 编译
    +关注

    关注

    0

    文章

    624

    浏览量

    32449
  • Rust
    +关注

    关注

    1

    文章

    225

    浏览量

    6415

原文标题:Meta开源Rust编写的高性能构建系统

文章出处:【微信号:OSC开源社区,微信公众号:OSC开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    鸿蒙OpenHarmony开发板解析:【Rust模块配置规则和指导】

    Rust是一门静态强类型语言,具有更安全的内存管理、更好的运行性能、原生支持多线程开发等优势。Rust官方也使用Cargo工具来专门为Rust代码创建工程和
    的头像 发表于 05-10 11:32 709次阅读
    鸿蒙OpenHarmony开发板解析:【<b class='flag-5'>Rust</b>模块配置规则和指导】

    NVIDIA全面加快Meta Llama 3的推理速度

    Meta 最新开源大语言模型采用 NVIDIA 威廉希尔官方网站 构建,其经过优化后可在云、数据中心、边缘和 PC 的 NVIDIA GPU 上运行。
    的头像 发表于 04-23 09:52 192次阅读

    [鸿蒙]OpenHarmony4.0的Rust开发

    背景 Rust 是一门静态强类型语言,具有更安全的内存管理、更好的运行性能、原生支持多线程开发等优势。Rust 官方也使用 Cargo 工具来专门为 Rust 代码创建工程和
    的头像 发表于 02-26 17:28 387次阅读
    [鸿蒙]OpenHarmony4.0的<b class='flag-5'>Rust</b>开发

    Meta发布CodeLlama70B开源大模型

    Meta发布CodeLlama70B开源大模型 Meta发布了开源大模型CodeLlama70B,号称是CodeLlama系列体量最大、性能
    的头像 发表于 01-31 10:30 1026次阅读

    润开鸿基于高性能RISC-V开源架构DAYU800通过OpenHarmony兼容性测评

    近期,江苏润开鸿数字科技有限公司(以下简称“润开鸿”)基于高性能RISC-V开源架构处理器研发的OpenHarmony标准系统开发平台HH-SCDAYU800通过OpenHarmony 3.2.2
    发表于 12-14 17:33

    FastTime-纯Rust编写的高并发快速时间库

    FastTime, 纯Rust编写的快速时间库, 并发: 2800万+/秒. 一、组件
    的头像 发表于 11-06 09:23 372次阅读

    如何编写高性能Rust代码

    为了最大限度地提高Rust应用程序的性能,你需要了解支持代码的底层硬件架构,如何优化算法和数据结构,以及如何对代码进行配置和基准测试。在本文中,我们将简要介绍这些主题,希望能更好地理解如何编写
    的头像 发表于 11-03 14:28 517次阅读
    如何<b class='flag-5'>编写</b><b class='flag-5'>高性能</b>的<b class='flag-5'>Rust</b>代码

    Rust语言如何与 InfluxDB 集成

    Rust 是一种系统级编程语言,具有高性能和内存安全性。InfluxDB 是一个开源的时间序列数据库,用于存储、查询和可视化大规模数据集。Rust
    的头像 发表于 09-30 16:45 755次阅读

    如何在Rust中读写文件

    Rust是一种系统级编程语言,它的设计目标是提供安全、并发和高性能的编程体验。Rust的特点在于其内存安全性和线程安全性,它采用了一些创新性的威廉希尔官方网站 ,如所有权
    的头像 发表于 09-20 10:57 1313次阅读

    如何在Rust项目中使用InfluxDB 2.x

    Rust是一种系统编程语言,它具有高性能、内存安全和并发性等特点。InfluxDB是一个开源的时序数据库,它专门用于存储和查询时间序列数据。InfluxDB 2.x是InfluxDB的
    的头像 发表于 09-19 16:33 394次阅读

    如何在Rust中使用Memcached

    Memcached是一种高性能、分布式的内存对象缓存系统,可用于加速动态Web应用程序。Rust是一种系统级编程语言,具有内存安全、高性能
    的头像 发表于 09-19 16:30 912次阅读

    Rust构建QEMU插件的框架

    Cannonball 是一个用 Rust 构建 QEMU 插件的框架!您可以在 C 语言的 QEMU TCG 插件中执行的任何操作,都可以使用cannonball。编写以最小的开销和尽可能多的功能运行的插件!
    的头像 发表于 07-21 16:57 554次阅读

    Rust开源社区推出龙架构原生适配版本

    应用程序时具有优良的并发性能,其高性能特性使Rust适用于编写高效的系统软件,如操作系统内核、嵌
    的头像 发表于 07-17 16:54 332次阅读
    <b class='flag-5'>Rust</b><b class='flag-5'>开源</b>社区推出龙架构原生适配版本

    Meta最新开源图形库IGL,star近2k,支持游戏开发、3D建模

    Meta 称 IGL 的特性包括:跨平台兼容、高性能渲染、易于使用的 API、可扩展、完全开源、可用于任何项目,并且没有任何许可限制。
    的头像 发表于 07-12 11:34 594次阅读
    <b class='flag-5'>Meta</b>最新<b class='flag-5'>开源</b>图形库IGL,star近2k,支持游戏开发、3D建模

    Rust代码中加载静态库时,出现错误 ` rust-lld: error: undefined symbol: malloc `怎么解决?

    我正在 MCUXpresso IDE 中创建一个静态库。我正在使用 redlib 在我的代码中导入 ` [i]stdlib.h`。它成功地构建了一个静态库。但是,静态库中未定义一些标准库函数,例如
    发表于 06-09 08:44