写点什么

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

评论

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

空间应用中心AI4S空间科学实验研究成果发表于《中国科学院院刊》

ModelWhale

人工智能 人工智能大数据 中科院

深入研究:亚马逊商品列表API详解

tbapi

亚马逊API 亚马逊商品详情API 亚马逊商品列表接口 亚马逊数据采集

Electron Demo 的快速编译与启动

Geek_1ef48b

Wasm Client SDK 架构介绍

Geek_1ef48b

财务领导者如何推动EPM系统现代化的快速增长

智达方通

全面预算管理 财务管理

开启报名!火山引擎 x PICO-全国大学生物联网设计竞赛赛题发布

火山引擎边缘云

物联网 火山引擎 端智能 具身智能

如何实现应用内支付零掉单?

HarmonyOS SDK

harmoyos

1天成为Java高手?飞算 Java AI 解锁学习捷径

飞算JavaAI开发助手

程序员的 “代码平权” 时代:飞算 JavaAI 如何打破技术壁垒?

飞算JavaAI开发助手

SvelteKit 最新中文文档教程(22)—— 最佳实践之无障碍与 SEO

冴羽

前端开发 前端框架 React Svelte SvelteKit

为什么 .NET8线程池 容易引发线程饥饿

量贩潮汐·WholesaleTide

Java .net

vllm+vllm-ascend本地部署QwQ-32B

zjun

质量视角下的系统稳定性保障--稳定性保障常态化自动化实践

京东科技开发者

深入研究:亚马逊商品详情API接口

tbapi

亚马逊API 亚马逊商品详情接口 亚马逊数据采集

面试5家收到4家offer,Java面试成功率高达80%!

程序员高级码农

Java java面试 Java面试题 Java面试题库

无界闪联 鸿启未来|“源师兄”智慧大脑L1焕新升级发布

坚果

润开鸿

使用YMP工具实现Oracle到YashanDB迁移全过程解析

数据库砖家

数据库

面试官:SpringBoot 工程启动以后,希望将数据库中已有的固定内容提前加载到 Redis 缓存中,应该如何处理

电子尖叫食人鱼

数据库

云图说|HSS新版‘反黑三件套’,全方位守护主机与容器安全!

华为云开发者联盟

华为云 主机安全 HSS

外贸企业网络加速方案选择指南

Ogcloud

网络加速 企业组网 海外网络加速 企业网络加速 网络加速服务

循序渐进搭建复杂B端系统整洁架构

京东科技开发者

2025 年 Java 开发者薪资报告:AI 工具如何助你 “升职加薪”?

飞算JavaAI开发助手

Wasm Client SDK线上优化

Geek_1ef48b

覆盖 6 大场景的在线工具网!这个宝藏网站让学习、办公、带娃全变简单

极客天地

零基础学编程,为何选 iVX?

代码制造者

低代码 无代码

开发者必看!2025 年最值得关注的 AI 代码工具 Top5

飞算JavaAI开发助手

Arthas stack (输出当前方法被调用的调用路径)

刘大猫

Java 监控 Arthas stack 调用路径

Flutter Demo 的快速编译与运行

Geek_1ef48b

程序员加班真相:60% 时间浪费在重复代码?AI 重构的破局之道

飞算JavaAI开发助手

数据分析与AI丨预测电池寿命只需要2小时!Altair RapidMiner 实现论文级AI 模型流程化

Altair RapidMiner

人工智能 数据分析 汽车 电池 RapidMiner

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