写点什么

构建工具 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:002132

评论

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

国内大厂在移动端跨平台的框架接入分析,2021年一起努力应对互联网寒冬吧

android 程序员 移动开发

大型项目必备IPC之其他IPC方式(二)(1),移动跨平台开发框架移动

android 程序员 移动开发

大学做客户端竟连外包面试都面不过?客户端真的会两年内消失么?(1)

android 程序员 移动开发

太难为我这个应届生了,腾讯面试了8轮,终拿下腾讯Android测发岗offer

android 程序员 移动开发

基于MediatorLiveData实现红点的统一管理,事件分发机制怎么回答

android 程序员 移动开发

基于RocketMq的分布式事务解决方案,android实战开发记账本app视频

android 程序员 移动开发

大厂背书有多爽?绩效太低跳槽意外收到多份小厂受邀,面试卡壳居然还卡进了复试

android 程序员 移动开发

图文DEMO并茂讲解RecyclerView滑动时回收和复用触发的时机

android 程序员 移动开发

在腾讯从事Android 开发8年的老王,尽然在一轮裁员风暴中绊了跟头!

android 程序员 移动开发

地狱难度!字节跳动Android高级岗:说说RecyclerView的回收复用机制

android 程序员 移动开发

基于 Kotlin + Netty 实现一个简单的 TCP 自定义协议,kotlin扩展函数原理

android 程序员 移动开发

图片加载框架之图片加载框架选型(一)中篇,阿里P8大佬亲自教你

android 程序员 移动开发

在Android中集成Flutter的学习笔记,flutter登录跳转

android 程序员 移动开发

坑!页面短视频加载又卡又慢?阿里P8大佬教你两套办法秒开短视频

android 程序员 移动开发

备忘录模式,震撼来袭免费下载

android 程序员 移动开发

因为不了解Android事件分发机制,居然被实习生嘲笑了,天呐

android 程序员 移动开发

图巨多,手把手教学Android-Studio超详细安装过程,kotlin菜鸟教程

android 程序员 移动开发

在中国程序员是青春饭吗?,在阿里工作5年了

android 程序员 移动开发

复习2个月拿下美团Android岗offer,还有点不容易啊!,最新Android开发进阶

android 程序员 移动开发

大学毕业做音视频开发,月入20K,你呢,带你全面掌握高级知识点

android 程序员 移动开发

大佬教你如何处理Android启动页黑屏,以及原理解析,android软件开发语言

android 程序员 移动开发

大学做客户端竟连外包面试都面不过?客户端真的会两年内消失么?

android 程序员 移动开发

在面试中需要注意哪些问题你知道吗?(内含Android面试题

android 程序员 移动开发

基于RocketMq的分布式事务解决方案(1),一线互联网移动架构师Android框架体系架构

android 程序员 移动开发

备战秋招-阿里巴巴面试真题:-给你一个Demo-你如何快速定位ANR?

android 程序员 移动开发

备战金九银十:BAT大厂最爱问的Android核心面试百题详细解析!

android 程序员 移动开发

在-Kotlin-中使用-Dagger-会遇到的陷阱和优化方法,android开发实例大全PDF

android 程序员 移动开发

基于-Kotlin-+-Netty-实现一个简单的-TCP-自定义协议,阿里技术专家深入讲解

android 程序员 移动开发

备战2021:阿里巴巴,字节跳动,阿里+头条+抖音+百度+蚂蚁+京东面经

android 程序员 移动开发

大牛教你详解 Activity 的生命周期,kotlin反编译工具

android 程序员 移动开发

大意了,又是 OOM ,Android 内存监控一定要注意这几点

android 程序员 移动开发

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