Right now, in order to issue a release, we download the latest libasherah bundle from the GitHub project, and include the compiled libraries for all platforms, then release a single wheel that is usable for all Python versions and all platforms. This is producing, currently, a 23mb wheel file.
What we should be doing instead is building the platform-specific libraries at bundle time, and bundling only the necessary libraries. From what I have been able to figure out so far, this will involve:
- Add a git submodule for asherah-cobhan
- Split the publish workflow to do builds across all supported Python versions and platforms
- Python 3.7, 3.8, 3.9, 3.10
- MacOS, Linux
- Have the individual builds compile libasherah, then produce version/platform specific wheels
- Ensure that libasherah is contained in the sdist
This will end up producing, for example, asherah-0.2.0-cp39-cp39-macosx_11_0_x86_64.whl
Our build/publish time will be massively increased, but wheel size will be massively decreased, and there will be no more magic bundling of external libraries that could stand out as a potential red flag to external folks.
One optimization I would hope for would be that we could produce asherah-0.2.0-py3-macosx_11_0_x86_64.whl. The difference here would be that it's platform dependent, but not python version dependent. I'm just not sure how to make this work, especially with Poetry.