社区镜像:下载 Zig 的更好方式
2025年6月30日
由于 Zig 正在积极开发中,因此经常需要下载新的 Zig 编译器版本,特别是当您跟踪“master”预发布版本而不是带标签的发布版本时。在某些情况下,您可能希望重新获取相同的 Zig 版本,例如无状态 CI 运行。这给我们带来了一个看似微不足道的问题:您到底如何下载 Zig?
显而易见的方法始终是从 ziglang.org 下载压缩包。然而,该网站托管在一种有意简化的配置上,旨在优化整体效率,而不是在网络托管上花费大量资源。因此,为了避免过载,我们之前曾公开建议人们尽可能使用镜像来下载 Zig,并且我们对压缩包进行了加密签名,以使这种方法更可行。Zig 官方网站不提供任何正常运行时间或带宽保证,因此下载镜像通过潜在地提高可用性和速度,实际上直接惠及用户。
只有一个问题:到目前为止,还没有真正可用的镜像。这种情况去年开始改变,当时 setup-zig 项目成为第一个实际利用 Zig 压缩包下载镜像的广泛使用的项目。然而,这些镜像对其他项目来说并不容易访问,因为它们不想承担维护自己镜像列表的负担。
为了解决这个问题,我们引入了社区镜像。
这个想法很简单。自动化程序不应再从 ziglang.org 下载压缩包,而是应从中获取一个由 Zig 核心团队维护的小型文本文件,其中包含由社区运行的镜像的 URL。这减轻了其他人维护自己镜像列表的负担,从而使工具能够更高效地下载 Zig。我们还有一些巧妙的自动化测试,以确保所有镜像都正常运行,因此不用担心镜像出现问题却未被发现的风险。
下载页面现在包含指向新的社区镜像页面的链接,该页面解释了如何在您的代码中使用镜像——如果您编写了下载 Zig 的代码,请务必查看。整个过程归结为获取镜像列表(它只是每行一个 URL 的纯文本 ASCII),对其进行随机排序,然后依次尝试每个镜像,最后再回退到 ziglang.org。您必须验证从镜像下载的压缩包的加密签名——因为它们由第三方托管,镜像理论上可能为您提供恶意或损坏的文件。
如果您有资源和时间,现在为 Zig 生态系统做出贡献的一个好方法是托管您自己的镜像。您不需要任何特定的经验或许可:只需查看该链接即可。托管下载镜像有助于在 Zig 流行度增长时保持其可访问性,并且不需要太多持续维护。
今天就到这里。感谢大家!
Matthew