写点什么

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

评论

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

干货分享 | 深度解析云原生消息队列 AMQP

Apache Pulsar

架构 分布式 云原生 中间件 Apache Pulsar

博文推荐|多图科普 Apache Pulsar

Apache Pulsar

开源 架构 分布式 云原生 Apache Pulsar

深化生态合作!博睿数据APM正式上架华为云严选商城

博睿数据

产品对比:TeamCode DCS 与 Docker Dev Environment

Draven Gorden

云原生 团队协作 开发者工具 开发工具 开发环境

凭什么说jdk11比jdk8好?

老地平线

JVM jdk8 JDK11

架构团队如何重构内部系统

智联大前端

重构

实用机器学习笔记一:概述

打工人!

机器学习 深度学习 算法 学习笔记 12月日更

spring security登录流程解析(用户名、密码模式)

Tracy-wen

从用户到开发者,日本独角兽 SmartNews 的社区二三事

Zilliz

数据库 推荐算法 流媒体

Istio 实践手册 | 服务网格介绍

xcbeyond

istio 服务网格 28天写作 12月日更 Istio 实践手册

iOS Pod Update 指数级变慢?看 Flutter 新一代仲裁算法 Pubgrub 如何解

阿里巴巴终端技术

flutter ios 算法 仲裁

一周信创舆情观察(11.22~11.28)

统小信uos

译文|基于 Pulsar 的事件驱动铁路网

Apache Pulsar

开源 架构 分布式 中间件 Apache Pulsar

开发者实践丨Agora Home AI 音视频的未来

声网

音视频 开发者实践 RTE大赛

优酷播放黑科技 | 自由视角技术体验优化实践

阿里巴巴终端技术

ios android 移动应用 音视频 客户端开发

vue框架的组件与组件通信方法

Changing Lin

12月日更

Google 宣布将 Knative 捐赠给 CNCF

QiLab

Google Knative cncf

第五模块总结

张靖

#架构实战营

元气部落美拆芒趣一番赏盲盒app开发

风行无疆

光传送网波分系统故障定位探索

鲸品堂

告警 告警光传送网、故障定位

万国数据发布首份ESG报告,承诺2030年同时实现碳中和及100%使用可再生能源

WorkPlus

QCon 北京|Apache Pulsar:云原生时代的消息服务

Apache Pulsar

开源 架构 分布式 云原生 Apache Pulsar

几道蛮有意思的前端面试题

CRMEB

和12岁小同志搞创客开发:手撕代码,做一款火焰报警器

不脱发的程序猿

少儿编程 DIY 智能硬件 创客开发 Arduino

如何在信息不完备下进行快速决策?

石云升

决策 28天写作 职场经验 12月日更

【福利】腾讯WeTest专有云解决方案,限时开放招募体验官

WeTest

数创新境,ToB要做难而正确的事

ToB行业头条

数据云平台助力企业数字化转型

星环科技

大数据 数字化 云平台

博文推荐|如何使用Apache Pulsar + Hudi 构建 Lakehouse

Apache Pulsar

Java 开源 架构 分布式 Apache Pulsar

超赞圆形动画进度条,爱了爱了(使用HTML、CSS和bootstrap框架)

海拥(haiyong.site)

CSS 大前端 28天写作 签约计划第二季 12月日更

创业研发团队的组织建设-人才招聘

wood

创业 团队建设 28天写作

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