AICon上海|与字节、阿里、腾讯等企业共同探索Agent 时代的落地应用 了解详情
写点什么

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

评论

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

法行宝爱企查全新AI形象上线,新角色度律度秘登台亮相

科技热闻

PingCAP 跻身 Forrester Wave 报告,成为唯一连续两次上榜的中国数据库厂商

先锋IT

【JIT/极态云】技术文档-- Word模版

武汉万云网络科技有限公司

低代码

【JIT/极态云】技术文档--应用变量

武汉万云网络科技有限公司

低代码

解锁亚马逊购物新境界:深度探索API接口——从商品详情到评论分析,再到关键字搜索实战指南

代码忍者

API 接口 pinduoduo API

软件系统国产化以后,应用是否需要0-1开发?

FinFish

小程序容器 小程序容器技术 纯血鸿蒙 信创操作系统

使用 NGINX 和 NGINX Plus 实现负载均衡(第 2 部分)

NGINX开源社区

负载均衡 读书笔记

AE 3D粒子系统插件:Trapcode Particular for Mac 激活版

你的猪会飞吗

mac软件下载 Mac破解软件

快递鸟电子面单批量打印API接口Demo免费下载

快递鸟

快递物流 电子面单

淘宝店铺商品全览:揭秘淘宝店铺所有商品API接口的无限商机

代码忍者

API 接口 pinduoduo API

制造业生产遇到“瓶颈”,MES系统帮您重新赋能!

积木链小链

制造业 mes

【论文速读】| RobustKV:通过键值对驱逐防御大语言模型免受越狱攻击

云起无垠

开源可视化工具对比:JimuReport VS DataEase

JEECG低代码

数据可视化 报表 数据大屏 报表工具 仪表盘设计器

“融为本,数为源,智为力”开启财务数智化转型华章

用友智能财务

财务 企业数智化 企业数智化转型

DriveDx for mac(mac磁盘健康检测和监控工具) v1.12.1激活版

小玖_苹果Mac软件

工作上个的好搭子——通义灵码测评分享

穿过生命散发芬芳

通义灵码

SD-WAN如何解决企业跨国组网难题

Ogcloud

SD-WAN SD-WAN组网 SD-WAN服务商 跨国组网 SD-WAN国际专线

BetterDisplay Pro Mac(显示器管理工具) v2.0.11激活版

小玖_苹果Mac软件

我用豆包MarsCode IDE 做了一个 CSS 权重小组件

Trae

CSS 程序员 AI

淘宝京东商品详情页接口

tbapi

淘宝API接口 京东API接口 淘宝商品详情接口 京东商品详情接口

淘宝关键词搜罗神器:深入探索淘宝商品搜索API接口

代码忍者

API 接口 pinduoduo API

前端页面测试如何定位漏测代码

Hi-CodeCaptain

软件质量 测试覆盖率 精准测试 前端代码 前端覆盖率

强到连何同学都抄袭的ASCII-generator是什么鬼

安全乐谷

Python OpenCV 开源、 image-to-text image-to-image

Navicat Premium 15 for Mac(数据库开发工具) v15.0.36中文激活版

小玖_苹果Mac软件

DApp、链游与交易所的盈利点解析:如何在区块链生态中挖掘财富?

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

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