写点什么

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

评论

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

如何利用国产图数据库打造金融行业方案?

星环科技

美女程序“媛”:从工程师到架构师,我的代码人生

融云 RongCloud

程序员 代码人生

P9都爱不释手!Alibaba9月最新出品776页JDK源码+并发核心原理解析小册

Java 架构 面试 程序人生 编程语言

从头到尾没有一句废话!阿里Redis神级手册,从基础到源码一次讲清

Java 架构 面试 程序人生 编程语言

译文 | MySQL 8.0 密码管理策略(一)

RadonDB

MySQL 数据库

CRM系统如何帮助你的业务?

低代码小观

企业管理 CRM

StartDT Hackathon | 泛元数据:让数据成为资产

奇点云

CRM是什么,你有认真了解过CRM吗?

低代码小观

企业管理 CRM

【编程语言】[Go] Go语言入门

衣谷

golang 协程 GC

推动数据安全战略落地 新思科技给出这些建议

InfoQ_434670063458

带你了解数仓安全测试的TLS协议

华为云开发者联盟

安全 通信 密钥 SSL/TLS协议 加密通信

开发实践 —— 教你使用Z-ONE Studio Lite + Digital car创建智能场景

SOA开发者平台

软件定义汽车 流程图绘制工具 数字汽车 汽车SOA

上汽零束 | 官方有奖征文正式启动,速来挑战!

SOA开发者平台

Automotive SPICE® 汽车功能安全

SOA开发者

AWE Asia 2021 | 百度AI+AR,塑造AR应用智能新体验

百度开发者中心

AI 最佳实践 方法论

第7章-《Linux一学就会》-Centos8 用户管理

学神来啦

Linux linux运维 linux学习 Linux教程

融云 IM+RTC+X「全」通信解决方案,赋能全平台、多语言开发者

融云 RongCloud

通信 技术栈 语言 & 开发

开发实践 —— 教你使用Z-ONE Studio Lite + Digital car创建智能场景

SOA开发者

上汽零束 | 官方有奖征文正式启动,速来挑战!

SOA开发者

乌镇回溯 | 构建网络空间命运共同体,旺链科技做了哪些?

旺链科技

数字经济 产业区块链 世界互联网大会

Go 语言实现 WebSocket 推送

全象云低代码

websocket 低代码开发 Go 语言

Talk to AI,揭秘背后的语音识别数据

澳鹏Appen

语音 nlp 语音识别 训练数据 语音识别模型

必须得会的汽车ECU研发基础--ECU软件架构概览3

SOA开发者

SOA架构概述

SOA开发者

四种主要网络IO虚拟化模型

hanaper

基于云的 CRM 能为您的业务提供哪些服务?

低代码小观

企业管理 CRM

2021年海南企业办理等保业务指南

行云管家

网络安全 等保测评 等保评测 海南

云短信服务孰优孰劣?博睿数据重磅发布云短信评测报告

博睿数据

Nacos-Group

平凡人生

「AI时代下的融合通信技术」专场等你赴约|QCon 2021

网易云信

人工智能 音视频

未来E/E架构的发展情况

SOA开发者

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