Meta 开源 Rust 编写的高性能构建系统
看来最近 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 添加或重新实现语言规则。
项目地址:链接
官方网站:链接

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
因盗版“文心一言”App 泛滥,百度起诉苹果公司及相关开发者团队
百度官方发布声明称,其公司就 App Store 和各种应用商店上存在大量盗版“文心一言”App 的问题,已向北京市海淀区人民法院对苹果公司及相关开发者团队发起诉讼。 百度官方声明: 目前文心一言没有任何官方APP!在我司官宣前,凡是在App store和各种应用商店看到的“文心一言”APP都是假的!凡是“文心一言”收费下载、付费会员都是骗子!凡是向您售卖“文心一言内测激活码”的都是骗子!凡是声称有“文心一言源代码”的都是骗子! 认准文心一言官方网站:https://yiyan.baidu.com/ 根据官网的介绍,文心一言是知识增强的大语言模型,也是文心大模型家族的新成员,能够与人对话互动,回答问题,协助创作,高效便捷地帮助人们获取信息、知识和灵感。文心一言基于飞桨深度学习平台和文心知识增强大模型,持续从海量数据和大规模知识中融合学习,具备知识增强、检索增强和对话增强的技术特色。 延伸阅读 百度文心一言正式亮相
- 下一篇
华为云开源项目OpenTiny的TinyNG组件库应该如何使用?
最近华为云出品了一个开源项目叫OpenTiny,其中包含两个前端组件库项目一个是TinyVue另一个是TinyNG组件库。TinyNG组件库是一个基于Angular框架的开源UI组件库,其中包含了丰富的UI组件,如按钮、输入框、表格、对话框等,可以方便开发人员快速构建Web应用界面。TinyNG组件库的设计风格简洁、易于使用,同时支持响应式设计,可以适配不同的设备尺寸。同时,它也支持自定义主题和国际化,满足不同项目的需求。我最近也是尝试使用了这个TinyNG组件库,下面也给大家说一下这个TinyNG组件库到底是怎么使用的。 使用TinyNG组件库的步骤如下: 下载并导入TinyNG组件库的CSS和JS文件到项目中。 在HTML文件中引入相关的CSS和JS文件。 在页面中使用组件库提供的组件和工具。 例如,使用按钮组件: 当然,除了按钮组件,还有很多其他的组件和工具,可以根据实际需求使用。在使用时,可以参考TinyNG组件库的文档,文档中提供了详细的组件和工具的使用说明和示例代码。 在使用了下OpenTiny项目中TinyNG组件库后,其实整体感觉还是非常不错的,组件也是非常丰富,并且T...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Windows10,CentOS7,CentOS8安装Nodejs环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS8编译安装MySQL8.0.19
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Hadoop3单机部署,实现最简伪集群