写点什么

构建工具 Bazel 发布 1.0 版本,更稳定,更高兼容性

  • 2019-10-28
  • 本文字数:926 字

    阅读完需:约 3 分钟

构建工具Bazel发布1.0版本,更稳定,更高兼容性

Bazel源自谷歌内部构建工具 Blaze,是一个构建和测试工具,提供了人类可读的定义语言,主要针对具有多语言、多代码库的大型项目。Bazel 最初是在 2015 年开源的,现在发布了1.0版本


Bazel 1.0 保证了更高的稳定性和向后兼容性,因为这些是 Bazel 用户的主要痛点。Bazel 或其生态系统经常发生重大变更,导致用户经常需要重写一部分构建规则。事实上,Bazel 团队已经承诺在未来的 Bazel 版本中遵循语义版本控制,这意味着只有主要版本才允许包含重大变更。此外,Bazel 团队承诺主要版本之间至少保持稳定三个月。


在创建依赖关系图时,Bazel 使用内容摘要而不是时间戳来确定过时的工件,这样就有可能可以避免不必要的重新构建,即使是分布在多个时钟不完全同步的主机上也可以进行可预测的构建。分布式构建是 Bazel 的一个复杂特性,为了能够在云端构建大型的系统。因为使用了内容摘要,Bazel 能够缓存中间构建步骤的输出结果,并在必要时重用它们。中间结果也可以在团队之间共享。Bazel 的另一个独特之处在于它的密封性。也就是说,Bazel 的构建是沙箱化的,如果一个构建规则没有声明依赖于一个给定的文件,那么它将不能完全打开那个文件,从而排除了隐藏依赖的可能性。这就提升了可优化的空间,并支持可重复的构建。


与其他大多数构建系统(通常与特定的语言绑定)相反,Bazel 从一开始就是一个多语言构建系统。这是通过为可构建目标类型定义一些特定于语言的规则来实现的,例如,针对 C/ C++的 cc_library 和 cc_binary 规则,针对 Java 的 java_binary 和 java_import,等等。对主要语言的支持都是开箱即用的,如果有必要也可以很容易添加新的规则。


Bazel 用来定义新规则的语言叫做Starlark,它的灵感来自于 Python 3 语法,尽管它并不包含所有 Python 特性。它不支持可变集合或文件 I/O,主要是为了防止程序员使用这些特性来创建构建系统之前不知道的工件,从而破坏 Bazel 依赖关系图。


Bazel 1.0 的发布得到了一些开发人员的积极响应,他们对 Bazel 的性能和效率超过其他构建工具(如 Maven 和 Gradle)大加赞许。向后兼容性被大多数开发人员认为是向前迈出的重要一步,为 Bazel 第三方规则生态系统的发展提供了更稳定的基础。


原文链接


Open-Source Build and Test Tool Bazel Reaches 1.0


2019-10-28 08:001963

评论

发布
暂无评论
发现更多内容

什么是 Kubeless?| 玩转 Kubeless

donghui

Kubernetes kubeless

“三段三域法”应用架构模型

凌晞

架构 架构设计 技术架构

MySQL-技术专题-实战技巧

码界西柚

2020第十三届南京国际智慧停车展览会

InfoQ_caf7dbb9aa8a

2020第十三届南京国际大数据产业博览会

InfoQ_caf7dbb9aa8a

SpringBoot-技术专题-@Async异步注解

码界西柚

2020南京国际人工智能产品展览会

InfoQ_caf7dbb9aa8a

人工智能

SpringBoot 实战:如何优雅的处理异常

看山

springboot 实战 优雅响应

手把手教你锤面试官 04——假装精通redis

慵懒的土拨鼠

MySQL-技术专题-Join语法以及性能优化

码界西柚

转型敏捷123

研发管理Jojo

架构方法论之“极限审视法”

凌晞

架构 方法论 设计思维

从戚家军看组织战斗力塑造(组织的六脉神剑)

凌晞

组织

Java 客户端操作 FastDFS 实现文件上传下载替换删除

哈喽沃德先生

Java 文件系统 分布式文件存储 fastdfs 文件服务器

2020第十三届南京国际智慧工地装备展览会

InfoQ_caf7dbb9aa8a

架构师训练营第一期 - 第四周课后 - 作业二

极客大学架构师训练营

PanDownload复活了!60MB/s!附下载地址

程序员生活志

PanDownload 网盘 下载器

技术解码 | 玩转视频播放,自适应码流技术

腾讯云音视频

音视频 转码

第3周作业提交

饭桶

晨间日记的奇迹

熊斌

读书笔记

坚持写技术博客一年能有多少收获!

小傅哥

Java 面试 架构师 编程经验 技术博客

技术革新的脉络及趋势

凌晞

技术 进步

轻言业务架构图

凌晞

架构 企业架构 架构设计 架构设计原则 业务架构

我就不服了,看完这篇文章,5大常见消息队列开发你还学不会

小Q

Java 编程 程序员 开发 消息队列

高难度对话读书笔记——目的篇

wo是一棵草

第3周学习总结

饭桶

Redis-技术专题-数据结构

码界西柚

万万没想到!ModelArts与AppCube组CP了

华为云开发者联盟

AI 技术 华为云

2020第十三届南京国际智慧新零售暨无人售货展览会

InfoQ_caf7dbb9aa8a

2020南京国际工业互联网及工业通讯展览会

InfoQ_caf7dbb9aa8a

MySQL-技术专题-SQL性能分析

码界西柚

构建工具Bazel发布1.0版本,更稳定,更高兼容性_开源_Sergio De Simone_InfoQ精选文章