阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

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

评论

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

VUE3子表格嵌套分页查询互相干扰的问题解决

EquatorCoco

前端 前端开发 Vue3

iOS App审核状态和审核时间管理指南

2024谷歌SEO入门指南

九凌网络

传统开发与低代码/无代码开发的区别

这我可不懂

软件开发 低代码 JNPF

鼠标自动点击工具 RapidClick for Mac激活最新版

南屿

Mac软件 RapidClick破解版

一次编写,多次利用:提高 API 构建效率的技巧

Apifox

前端 后端 开发工具 Apifox API

鸿蒙5.0发布时间已定!移动开发加速器往何处寻找?

Geek_2305a8

【大模型】快速体验百度智能云千帆AppBuilder搭建知识库与小助手

阿Q说代码

知识库 千帆大模型平台 AppBuilder 小助手

什么是DDOS流量攻击,DDoS防护安全方案

德迅云安全杨德俊

聚道云软件连接器:打通金蝶云星空与招商银行CBS,提升企业财务和银行业务效率

聚道云软件连接器

案例分享

Total Video Converter Pro超级转霸 Mac视频转换软件 v5.1.0下载

南屿

flutter+go构建的即时通讯app,ChatCraft

编程的平行世界

golang #开源项目 fluter

基于大模型的低代码平台架构

百度开发者中心

人工智能 低代码 大模型

大模型开发:从数据挖掘到智能应用

百度开发者中心

人工智能 大数据 大模型

小程序技术实践:如何快速开发适配鸿蒙的App

Geek_2305a8

区块链游戏解说:什么是 SecondLive

Footprint Analytics

区块链 加密货币 代币 NFT

如何将照片组合在一起?图片照片拼接合成软件合集

南屿

照片编辑 图片拼接 照片合成

SpringBoot实现动态数据源配置

不在线第一只蜗牛

Java 后端 springboot

人工智能:测试开发的新宠儿

测试人

软件测试

秒级响应,显著增效:明日控股携手奇点云,打造大宗贸易的数据中台标杆

奇点云

数据中台 数据资产 奇点云 明日控股

在 Windows 平台下安装与配置 MySQL 5.7.36

小魏写代码

NFTScan 与 OneID 达成合作伙伴,支持多类型 DID 搜索!

NFT Research

NFT NFTScan

软件测试学习笔记丨JMeter_实现分组并发

测试人

软件测试

新来的一个同事,把SpringBoot参数校验玩的那叫一个优雅

快乐非自愿限量之名

Java 前端 springboot

云API错误码的设计规则

EquatorCoco

Python 数据库 API

Mac好用的多窗格文件管理器QSpace Pro v4.0.4中文版

南屿

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