写点什么

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

评论

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

我是学生,想要参与 OpenCloudOS,该怎么做?

OpenCloudOS

Linux

esp8266 读取 modbus 类型数据在 Grafana 展示

jupiter

IoT esp8266 #Grafana Arduino ESP32-C

百度工程师漫谈视频理解

百度Geek说

人工智能 视频理解 企业号 2 月 PK 榜 视频动作分析

3M互助盘dapp系统开发源码部署

开发微hkkf5566

设备用私有CA签发的X.509证书接入IoT物联网平台——实践类

阿里云AIoT

小程序 网络安全 物联网 智能硬件 数据格式

MySQL性能指标TPS\QPS\IOPS如何压测?

Java MySQL 性能压测

AI绘图绘画NFT数藏系统开发(成熟案例)

I8O28578624

5大特性,带你认识化繁为简的华为云CodeArts Deploy

华为云开发者联盟

云计算 华为云 企业号 2 月 PK 榜 华为云开发者联盟 华为云CodeArts

企业如何落地DevOps(上)

老张

DevOps 软件工程

基于TCP协议的GPS定位器设备迁移到阿里云IoT物联网平台实践——实践类

阿里云AIoT

云计算 网络协议 物联网 数据采集 定位技术

GitHub上线重量级分布式架构原理设计笔记,开源的东西看着就是爽

Java 分布式 微服务

如何在IoT物联网平台注册私有CA证书,来实现X.509方式设备身份认证?——实践类

阿里云AIoT

小程序 算法 物联网 智能硬件

ModStartBlog v6.8.0 博客置顶功能,界面样式优化

ModStart

智能手持测温枪接入阿里云IoT物联网平台实践——实践类

阿里云AIoT

小程序 监控 物联网 开发工具 消息中间件

阿里大牛详细讲解:Spring Boot 集成Redisson实现分布式锁

Java Spring Boot 分布式锁

SQL 层功能改进 - lookupJoin 的优化

KaiwuDB

SQL优化 KaiwuDB lookupJoin

东数西算下,液冷数据中心为何日趋重要?

GPU算力

数据中心 高性能计算 东数西算 液冷散热

强将带新兵?试试少代码!

世开 Coding

开发框架 快速开发平台 Jmix

详解数仓的网络调度与隔离管控能力

华为云开发者联盟

数据库 后端 华为云 企业号 2 月 PK 榜 华为云开发者联盟

Java微基准测试神器JMH初探

FunTester

把 ChatGPT 加入 Flutter 开发,会有怎样的体验?

RTE开发者社区

flutter RTC 直播技术 RTE ChatGPT

企业研发治理转型利器:华为云发布流水线服务CodeArts Pipeline

华为云开发者联盟

云计算 华为云 企业号 2 月 PK 榜 华为云开发者联盟 华为云CodeArts

云原生 AI 的资源调度和 AI 工作流引擎设计分享

百度Geek说

人工智能 云原生 企业号 2 月 PK 榜

热点面试题:聊聊对 this 的理解?

Immerse

JavaScript 手写代码 this 前端面试题 #热点问题

Mysql都有那些最需要掌握的原理?

Java MySQL 数据库

又火了!GitHub标星百万的并发编程手册(彩图版)竟是从阿里流出

Java 并发编程 高并发

智能AI量化现货合约跟单交易机器人软件开发

开发微hkkf5566

UEditorPlus v2.9.0 文档仓库开源,修复若干问题

ModStart

将 Sentinel 熔断限流规则持久化到 Nacos 配置中心

Java 微服务 sentinel nacos Spring Cloud Aliababa

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