Reduce the internal formula API to contain the bare minimum data #20051
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The next step in #19204
This PR modifies the internal, sharded formula API to only include the bare minimum amount of data needed to download the bottle manifest file. The data needed, as far as I can tell, is simply the
name
,pkg_version
,rebuild
and the bottle checksum.The format I landed on is as follows:
For the major supported platforms, this results in compressed (
gzip
) file sizes listed below. For reference, theformula.json
file currently in use is 4.6 MB compressed (and 29 MB uncompressed).formula.json
arm64_sequoia
arm64_sonoma
arm64_ventura
sequoia
sonoma
ventura
x86_64_linux
Technically, this could be improved slightly by not including empty checksums or non-zero rebuild values. However, the best improvement I was able to get only decreased the compressed file size by an average of 1 kB. In my opinion, this slight improvement is not worth the added complexity.
All of the data and a chart that's easier to read are available here.
To do item for the future: figure out what happens if there is no bottle for a given platform. In some cases, I believe older bottles are sometimes still usable (I know this sometimes happens with new macOS releases). So, should we fall-back to the previous OS version if a given platform bottle doesn't exist?