写点什么

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

评论

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

2022-09-25:给定一个二维数组matrix,数组中的每个元素代表一棵树的高度。 你可以选定连续的若干行组成防风带,防风带每一列的防风高度为这一列的最大值 防风带整体的防风高度为,所有列防风高度

福大大架构师每日一题

算法 rust 福大大

大数据ELK(四):Lucene的美文搜索案例

Lansonli

9月月更 EKL

阿里五位MySQL封神大佬耗17个月总结出53章性能优化法则

Geek_0c76c3

Java 数据库 开源 程序员 开发

面试突击86:SpringBoot 事务不回滚?怎么解决?

王磊

Java 面试

阿里P8大牛总结的Java锁机制入门笔记,堪称教科书式天花板

收到请回复

多线程 语言 & 开发

react面试应该准备哪些题目

beifeng1996

前端 React

全网首次公开:Java面试参考指南V3.0版(完美契合当下所有互联网公司面试需求)

Java全栈架构师

数据库 程序人生 后端 高并发 Java 面试

第九期-模块一

wuli洋

Javaweb核心响应对象

楠羽

笔记 Java核心笔记 9月月更

2022年企业Java面试前复习的正确姿势(已助力512人入职大厂)

收到请回复

Java 程序员 微服务 语言 & 开发

【云原生 | 从零开始学Kubernetes】八、命名空间资源配额以及标签

泡泡

Docker 云计算 云原生 k8s 9月月更

数据中台架构概述

穿过生命散发芬芳

数据中台 9月月更

如何准备vue相关的知识点

bb_xiaxia1998

Vue 前端

20道常被问到的JavaScript题目

helloworld1024fd

JavaScript 前端

这些js手写题你能回答上来几道

helloworld1024fd

JavaScript 前端

信息论与编码(一)| 信源分类与数学模型

timerring

9月日更 信息熵

【编程实践】提高工作效率,避免重复且枯燥的操作,利用Python自动发送邮件

迷彩

SMTP 邮件协议 9月月更 Python邮件发送

Canvas+Javascript实现点击小球的爆炸效果

Sam9029

JavaScript canvas 9月月更 小球爆炸

【云原生 | 从零开始学Kubernetes】九、k8s的node节点选择器与node节点亲和性

泡泡

Docker 云计算 云原生 k8s 9月月更

【算法实践】手把手带你简单实现希尔排序

迷彩

算法 排序算法 希尔排序 算法实践 9月月更

Linux安装minikube指南

程序员欣宸

Kubernetes minikube 9月月更

总结了一下前端高频面试题的答案

loveX001

JavaScript 前端

阿里最新秋招面经,腾讯/美团/字节1万道Java中高级面试题

程序知音

Java 大厂面试 后端技术 Java面试八股文 阿里面试

2022前端面试官经常会考什么

beifeng1996

前端 React

阿里内网流传的9w字图解网络(全彩版)GitHub现已下载量过百万

程序知音

Java 程序员 计算机网络 后端技术 计算机底层

互联网架构师联合总结的Java面试攻略,GitHub标星30K!

程序知音

java面试 大厂面试 java架构师 后端技术 Java面试八股文

微信业务架构图与学生管理系统架构图

冷夫冲

架构实战营 #架构实战营 架构师实战营 「架构实战营」

全网首次公开!阿里巴巴1685页Java面试突击核心讲(基础到高级足足涵盖19个Java核心技术)

Java永远的神

数据库 spring 程序员 程序人生 java面试

Python语法之字典

芯动大师

字典 9月月更 Python语法

大厂前端面试考什么?

loveX001

JavaScript 前端

直冲云霄,阿里大牛耗时49天整理12W字面试手册,押题准确率直冲95%

Geek_0c76c3

Java 数据库 开源 程序员 架构

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