写点什么

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

评论

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

「混合专家模型」可视化指南:A Visual Guide to MoE

Baihai IDP

程序员 AI LLMs MoE 混合专家模型

电子电器组装行业MES系统解决方案

万界星空科技

mes 万界星空科技mes 电子mes 电子行业 电子电器行业

MES信息系统建设整体方案,MES技术方案书,需求规格说明书(Word原件完整版)

金陵老街

解决方案 系统源码

充电桩管理平台(源码+文档+部署+讲解)

深圳亥时科技

如何区分产品研发管理和研发项目管理?实用指南

易成研发中心

项目管理 产品研发 产品研发管理

一文解读GaussDB(DWS)监控运维诊断优化能力

华为云开发者联盟

sql 数据仓库 GaussDB

探索DDCA:深入理解内存架构、子系统与内存控制器

代码忍者

云起无垠入围“2024第五届“科创中国”科技创新创效大赛总决赛TOP10企业榜单”

云起无垠

利用人工智能 ChatGPT 提升测试开发能力:通往高效之路

测试人

软件测试

百度智能云 VectorDB 优势项目数量并列 TOP 1

Baidu AICLOUD

Milvus Zilliz 向量数据库 VDB

量子计算与人工智能的交汇:科技未来的新引擎

天津汇柏科技有限公司

人工智能 量子计算

电脑重装系统后硬盘数据可以恢复吗?系统重装后以前的文件怎么找回来?

阿拉灯神丁

EasyRecovery 数据恢复软件 电脑 备份 & 恢复 系统还原

小公司如何做好项目管理工作?管理者的实战经验

易成研发中心

项目管理 程序员 项目软件管理

Linux 文件处理命令:掌握文件管理的利器

测试人

软件测试

【教程】第七章:工作流——自动赋能,效率飞跃

NocoBase

开源 工作流 低代码 教程 无代码

荣誉|奇点云入选首批“百舸企业”名单

奇点云

Go Web服务中如何优雅平滑重启?

左诗右码

一文读懂计算机视觉「目标检测」的基本原理和主流模型

Zilliz

人工智能 计算机视觉 目标检测

探究亚马逊详情API接口:开发与应用

科普小能手

API API 接口 亚马逊API 亚马逊商品详情API 亚马逊API接口

淘宝商品详情API:如何通过商品ID获取全面信息

代码忍者

API 接口 pinduoduo API

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