写点什么

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

评论

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

一键擦除手写笔迹,试试这款省时省力的学习利器

合合技术团队

学习 手写识别 文字擦除 人工智能】

套娃嵌入:如何优化向量搜索成本,并兼顾延迟与召回

Zilliz

Milvus 向量搜索 套娃嵌入 向量存储

CodeRunner for Mac(多功能代码编辑软件)v4.4注册激活版

小玖_苹果Mac软件

WonderPen妙笔 for Mac(Mac文本写作工具)v2.5.8中文激活版

小玖_苹果Mac软件

WonderPen妙笔 WonderPen下载 WonderPen中文版 WonderPen激活版

Paste Wizard for Mac(剪贴板管理器)v14.1激活版

小玖_苹果Mac软件

软件测试丨Python语法与数据结构

测试人

软件测试

Screen Recorder by Omi Mac(Omi录屏专家‬)v1.3.11激活版

小玖_苹果Mac软件

【行云流水线】满足你对工作流编排的一切幻想~skr

京东科技开发者

【FAQ】HarmonyOS SDK 闭源开放能力 — 公共模块

HarmonyOS SDK

Steinberg Dorico Pro for Mac(乐谱编写软件)v5.1.70中文激活版

小玖_苹果Mac软件

打造个性化的Allure2报告:定制Logo和样式的软件测试报告

测试人

软件测试

记录一次RPC服务有损上线的分析过程

京东科技开发者

反向 Debug 了解一下?揭秘 Java DEBUG 的基本原理

京东科技开发者

Sequoia Cache Cleaner for mac(系统清理优化工具)v20.1激活版

小玖_苹果Mac软件

Cycling 74 Max for Mac(音乐可视化编程软件)v9.0.2激活版

小玖_苹果Mac软件

俯瞰 Monorepo,别一番风景!

蛋先生DX

前端 前端架构 前端工程化 Monorepo

商业开源服饰电商大模型-摹图

摹图

AI AI大模型 AI 图像生成

从 Llama 1 到 3.1:Llama 模型架构演进详解

Baihai IDP

程序员 AI LLM llama Baihai IDP

2025山西晋中等保测评机构地址在哪里?电话多少?

行云管家

等保 等保测评 晋中

公共事业信息系统怎么定义?需要过等保吗?

行云管家

信息系统 等保 等保测评 公共事业

AI Transcription for Mac(AI语音转录软件)v2.9激活版

小玖_苹果Mac软件

FSNotes for mac(文本处理软件)v6.9.8 中文免激活版

小玖_苹果Mac软件

如何用大模型+向量数据库,帮你搞定出行规划与旅游blog

Zilliz

向量数据库 LLM 大模型幻觉 微调

拼多多商品详情数据接口(Pdd.item_get)丨拼多多API接口指南

tbapi

拼多多商品详情接口 拼多多API接口

探索淘宝天猫API:轻松调用商品详情与关键词搜索商品列表

代码忍者

API 接口 pinduoduo API

CAPS Wizard for mac(打字输入辅助应用)v5.5激活版

小玖_苹果Mac软件

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