How can I obtain a list of published binaries

I can see the names of binaries at Download ⚡ Zig Programming Language and once binaries are posted they seem to never be deleted. However, how can I get a list of published versions?

My application is that 0.10.0-dev.4560+828735ac0 fails to build Python 3.11.0, but 4476+0f0076666 succeeds, and I thought it would be nice if I could “bisect” and nail down the exact version that breaks building Python before creating a bug report on Github.

I don’t think the latest development binaries are kept anywhere. If you need the exact versions, I’d suggest cloning the compiler repo and then checking out and compiling the given version yourself. Here’s a guide on how to build zig from source: https://github.com/ziglang/zig/wiki/Building-Zig-From-Source

Thanks!

I don’t think the latest development binaries are kept anywhere.

The binaries themselves are definitely kept. I know because I have build system that hardcodes the links to download specific binaries, and these links don’t break; at least, I’ve never seen them break. I actually don’t know how long they are kept (who maintains Download ⚡ Zig Programming Language and knows answers to questions about it?). What I can’t find is a list of the binaries that were published in the past, similar to how npm and github all show a list of past releases of a given package.

In any case, I’ve reported the bug as best I can: building Python 3.11.0 is broken on Linux and MacOS with the latest version of zig 4562+b3cd38ea4, but worked with 4476+0f0076666 · Issue #13303 · ziglang/zig · GitHub

You mean of published builds of master branch? We don’t have a list of those anywhere, I’m afraid. You can get a programmatically inspectable version of the download page by going here https://ziglang.org/download/index.json (it’s linked at the top of the download page) but it doesn’t list all unstable builds.

If you want to use a specific unstable version of Zig, you will have to build it yourself as others have mentioned.

Note that for the purpose of bisecting, using existing builds is still not optimal as we don’t get a build for every commit. Using git bisect + building Zig is the best way to do that, but I do understand that it’s tedious.

Thanks! I guess going forward I’ll just setup something that downloads that json file periodically and saves it. That would be equivalent to what I’m asking for, except it is only useful to me rather than everybody.

How long do the binaries that you post stay around? I’ve never noticed an old one disappear but for all I know they are automatically deleted after n days. I greatly value being able to pin a specific actual working and tested version of Zig for my build system, and this assumes that the binaries are not deleted. I can change things so I host a copy of the binaries somewhere if necessary. However, I don’t know if that is necessary or not.

Wow you guys flagged my post as spam because somebody made an incorrect statement about binaries. Sigh.

Actually, that was an automatic Discourse flag, stating that “a new user has posts with multiple links to the same domain,” so it flagged it automatically. I just restored the flagged posts.

Thanks. I was very confused since I haven’t used Discourse before. Thanks again for all the help!

1 Like

There is no precise rule, build artifacts accumulate on S3, Andrew occasionally cleans up old stuff (I’m guessing when preparing a new release). This might change in the future but we don’t have a real policy about this stuff other than he probably makes sure to never delete stuff that’s too recent.

1 Like