写点什么

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

评论

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

如何快速完成PostgreSQL数据迁移?|NineData

NineData

postgresql 数据迁移 不停机发布 NineData 结构迁移

HarmonyOS NEXT新能力,一站式高效开发HarmonyOS应用

HarmonyOS开发者

HarmonyOS

安徽阜阳是几线城市?有正规等级保护测评机构吗?

行云管家

等保 等级保护 等保测评机构 阜阳

大模型时代,如何重塑AI人才的培养?知名高校专家为您解答

飞桨PaddlePaddle

人工智能 paddle 百度飞桨

制造执行系统(MES)在新能源领域的应用

万界星空科技

新能源 新能源行业

小灯塔系列-中小企业数字化转型系列研究——项目管理测评报告

向量智库

对标数据科学家,直面AI浪潮丨和鲸助力中国石油大学(华东)理学院,打造有学科特色的数据科学与大数据专业

ModelWhale

大数据 人才培养 数据科学 高等教育 数据科学家

GaussDB技术解读系列之应用无损透明(ALT)

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 8 月 PK 榜

全链路Trace全量存储-重造索引

乘云数字DataBuff

华为携手华中地区5大高校倡议共建湖北省高性能计算研究院建设

彭飞

数仓中典型的几种不下推语句整改案例

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 8 月 PK 榜

低代码平台:简化软件开发步骤,让开发更简单

高端章鱼哥

软件开发 低代码 JNPF 开发方式

小灯塔系列-中小企业数字化转型系列研究——任务管理测评报告

向量智库

TiDB v7.1.0 跨业务系统多租户解决方案

PingCAP

MySQL 数据库 多租户 TiDB

开源软件下游分发合规性讨论 ——“心寄源”法律沙龙(2023第四期 | 总第九期)成功召开

开放原子开源基金会

开源

校源行丨开放原子开源基金会赴厦门大学访问交流

开放原子开源基金会

开源 校源行

细数应用软件的缺陷分类

华为云开发者联盟

后端 开发 华为云 华为云开发者联盟 企业号 8 月 PK 榜

小灯塔系列-中小企业数字化转型系列研究——企业网盘测评报告

向量智库

TiDB Bot:用 Generative AI 构建企业专属的用户助手机器人

PingCAP

人工智能 数据库 AI TiDB

企业大数据分析系统可以给企业主带来哪些帮助?

夜雨微澜

WAVE SUMMIT2023六大分会场同步开启,飞桨+文心大模型加速区域产业智能化!

飞桨PaddlePaddle

人工智能 paddle 百度飞桨

“一日之际在于晨”,欢迎莅临WAVE SUMMIT上午场:Arm 虚拟硬件早餐交流会

飞桨PaddlePaddle

人工智能 paddle 百度飞桨 硬件生态

融云荣获「2023 中国数字生态通信领军企业」奖

融云 RongCloud

互联网 通信 数字 融云 AIGC

OpenAtom OpenHarmony携千行百业创新成果亮相HDC.Together 2023

开放原子开源基金会

开源 OpenHarmony

Nginx 基本原理与最小配置

timerring

nginx

天翼云加速落地紫金DPU实践应用,让算力供给更高效!

天翼云开发者社区

云计算

LED电子显示屏幕如何计算它的面积

Dylan

广告 交通 LED显示屏 全彩LED显示屏 体育

HyperDock for Mac(mac窗口调整工具)v1.8.0.10中文激活版

mac

苹果mac Windows软件下载 HyperDock 窗口调整工具

程序员如何利用低代码平台提升软件开发效率?

互联网工科生

程序员 低代码 PaaS 开发工具 开发效率

Ethereum第一笔转账

FunTester

在软件开发领域寻找更安全的众包平台?YesPMP助您无忧!

知者如C

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