近年来,随着软件开发需求的不断增长和复杂化,构建系统的重要性愈发凸显。Chromium项目作为开源浏览器的核心工程,其构建过程直接影响到开发效率和软件质量。近期,Chromium团队宣布将构建系统从广泛使用的Ninja迁移至自主研发的Siso,这一重大变革引发了社区内外的广泛关注。为了更好地适应这一变化,了解切换背后的动因、Siso的特性以及实际操作成为每位Chromium开发者和相关从业者的必修课。Chromium为何做出从Ninja到Siso的调整?首先要明白,Ninja作为一种轻量级构建工具,以并行执行和简单配置闻名,服务了众多大型项目多年。然而,随着构建需求向远程执行和更复杂的构建图表示转变,Ninja在支持远程构建原生化方面显露出局限性。
Chromium团队为了优化持续集成(CI)和开发者的构建体验,投入资源打造了Siso,旨在成为Ninja的替代者。Siso的设计初衷是支持远程执行接口(REAPI)原生化,能够更高效地协调远程计算资源,从而大幅缩短构建时间。此外,Siso与GN构建生成工具紧密结合,支持mtime-less构建和更加高效的构建图序列化,提升了整体构建过程的智能化和可靠性。对于外部贡献者,Chromium官方明确提出,切换到Siso的步骤尽可能简化。用户只需通过常用的autoninja命令构建,运行一次gn clean后autoninja会自动调用Siso,而无需手动调整大量配置。若遇到兼容性或使用问题,还可通过args.gn中添加use_siso=false选项暂时回退至Ninja环境。
此举为开发者留出适应与反馈的空间,保障了迁移的平滑性。社区对这一举措的反应集中在兼容性和支持层面。部分开发者关心GN生成的.ninja文件是否依旧有效,及非远程执行场景下是否会出现不兼容问题。Chromium团队回应,虽然GN仍然生成.ninja文件,但逐步将支持重心转至Siso,并且计划在今年9月底之后停止Ninja和Reclient的支持。此后,外部开发者和各种构建环境将须完全使用Siso以享受最佳支持。针对其他使用远程构建服务的用户,Siso设计为能向任意符合REAPI标准的远程执行后端发送请求。
目前团队正与多家远程构建服务供应商沟通,以确保兼容性和无缝接入。值得关注的是,Siso不仅支持远程云构建,也能在无远程执行情况下完成本地Windows和Mac的构建任务,同时坚持支持ccache缓存机制,以维护传统本地快速构建功能。对于下游用户和发行版维护者而言,Siso的引入引发了一些疑虑。传统Linux发行版往往使用发布的源码包与分发的Ninja二进制进行构建,不依赖DEPS机制获取二进制文件。将来,他们是否需要自行构建Siso?是否有稳定的Siso版本对应Chromium版本?Chromium团队答复指明,Siso同样通过DEPS托管,未来下游可通过相同渠道获取。虽然暂时还无类似Ninja的独立版本发布机制,但是针对各发行版的需求或将制定相应策略。
此外,包括Electron、CEF及Node.js等依赖Chromium或其组件的项目,也正在评估Siso切换的影响与对接方式,相关讨论仍在持续。在实际使用过程中,部分开发者曾遇到有关Siso登录验证的问题,特别是在使用Google身份认证时出现权限阻挡。Chromium团队迅速响应,发布了1.3.5版本修复相关错误,同时提供了临时可用的参数选项以绕过验证,确保构建流程不受阻碍。伴随着Siso的成熟,社区也积极提出新的功能期望,比如调整构建状态展示方式以更好地支持非交互终端输出,以及更丰富的状态信息反馈,以提升用户体验。这些反馈被官方纳入跟踪管理,持续优化中。综上所述,Chromium从Ninja转向Siso体现了现代构建系统对远程执行与智能化管理的强烈需求。
Siso作为量身打造的构建工具,具备高扩展性和兼容性,已经开始在Google内部及外部开发环境中逐步推广。对于开发者而言,理解并适应这一变革,利用官方提供的迁移路径和反馈渠道,将有助于在未来的Chromium开发旅程中实现效率与稳定性的双重提升。未来,Siso仍将继续迭代完善,助力构建生态迈向更高效、更智能的阶段。