hhstore / blog

My Tech Blog: about Mojo / Rust / Golang / Python / Kotlin / Flutter / VueJS / Blockchain etc.
https://github.com/hhstore/blog/issues
291 stars 24 forks source link

build system: bazel / starlark #263

Open hhstore opened 3 years ago

hhstore commented 3 years ago

related:

hhstore commented 3 years ago

构建系统/构建工具:

bazel:

应用:

Starlark:

N年前,Google使用 Makefile 来管理代码。正如坊间传言,Makefile 管理代码太多时,就有点 hold 不住了。救急的解决办法是用 python 脚本来生成 Makefile,编译过程中用到的 python 函数都存储在 BUILD 文件中。但是这样还是太慢,瓶颈在 Make。

Blaze(后来以 Bazel 开源)项目开始于2006年。Blaze 用一个简单的解释器来读取 BUILD 文件(只支持函数调用,列表解析和变量分配)。Blaze 不能直接解析 BUILD 文件,通过 Python 解释器将用户的 BUILD 文件预处理为一个简化的 BUILD 文件,简化后的 BUILD 文件供 Blaze 使用。

这样处理起来简便并且允许开发者创建自己的宏。但是代码维护,性能,安全性又出现了很多问题。因为Blaze 本身不能解析 BUILD 文件,导致编译变得越来越复杂。

Bazel 经过重新设计,剔除了 Python 预处理的步骤。我们保留了 Python 的语法来移植基础代码。效果看上去不错:很多人喜欢我们的 BUILD 文件语法,并对一些构建工具进行了适配,比如 Buck, Pants 和 Please。

典型用例:

LUCI

luci-go

skycfg

Flutter LUCI:

hhstore commented 3 years ago

1

hhstore commented 3 years ago

1

hhstore commented 3 years ago

1

hhstore commented 3 years ago

1

hhstore commented 3 years ago

1