关于服务
翻译我在Starlark上编写构建自动化——一种支持Bazel和Buck系统的Python方言。如果您的构建速度慢、不稳定,或者在数十个BUILD文件中分散为复制粘贴,我会将它们转化为小型可重用的规则和宏,这些规则和宏是完全密封和可重现的。
您将获得:具有正确操作和输出文件的自定义规则;从BUILD文件中删除样板代码的宏;用于在规则之间传递结构化数据的自定义提供者;用于交叉编译的工具链和平台配置;用于代码生成、代码检查和依赖图分析的方面;确定性下载和固定外部依赖项的存储库规则。
正确性对我很重要。每个操作都明确声明输入和输出——没有任何内容从主机泄漏,远程缓存和远程执行立即生效,增量构建保持快速。我以惯用法编写Starlark代码,带有文档字符串,并用分析测试覆盖它,以便规则在下一个Bazel更新时不会静默破坏。
典型任务:将Make或CMake树迁移到Bazel,将一组规则提取到多个目标的公共库中,添加语言支持(Go、Rust、Python、TypeScript、protobuf),设置远程缓存和CI,调试非确定性输出和缓存未命中。将您的代码库发送给我并描述问题——我会将工作分解为明确的可验证步骤,并提供固定的价格和截止日期。
您将获得:具有正确操作和输出文件的自定义规则;从BUILD文件中删除样板代码的宏;用于在规则之间传递结构化数据的自定义提供者;用于交叉编译的工具链和平台配置;用于代码生成、代码检查和依赖图分析的方面;确定性下载和固定外部依赖项的存储库规则。
正确性对我很重要。每个操作都明确声明输入和输出——没有任何内容从主机泄漏,远程缓存和远程执行立即生效,增量构建保持快速。我以惯用法编写Starlark代码,带有文档字符串,并用分析测试覆盖它,以便规则在下一个Bazel更新时不会静默破坏。
典型任务:将Make或CMake树迁移到Bazel,将一组规则提取到多个目标的公共库中,添加语言支持(Go、Rust、Python、TypeScript、protobuf),设置远程缓存和CI,调试非确定性输出和缓存未命中。将您的代码库发送给我并描述问题——我会将工作分解为明确的可验证步骤,并提供固定的价格和截止日期。