python-pillow / python-pillow/Pillow
Supporting future-portable build targets (PEP 803 limited API)
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 13.8k
- Forks
- 2.5k
- Avg merge
- 2d 8h
- Merged PRs (30d)
- 89
Description
Hi, I would like to propose adding support for PEP 803 abi3t as a build target.
This would allow downstream (most notably matplotlib) to start testing Python pre-releases early and without needing to build their dependencies too, as well as future-proof the package's set of published artifacts for compatibility for future versions, eliminating the need for a new release each cycle.
In principle, this could be achieved in stages:
- support
abi3as a build target - publish
abi3nightlies - publish
abi3wheels to PyPI (in addition to version-specific ones) - support
abi3tas a build target - publish
abi3tnightlies - publish
abi3twheels to PyPI (in addition to version-specific ones)
Long term, granted the impact on performance is measured and considered acceptable, it could also make sense to stop shipping version-specific wheels altogether; retaining the ability to build them as needed, in particular for downstream re-packagers, as long as targeting stable ABIs is implemented as an opt-in (rather than an opt-out).
I have not studied the feasibility for this specific package yet, I'm just asking whether this seems like a goal worth pursuing for maintainers.
In my, perhaps limited experience, I don't think I've encountered a situation where this idea wasn't applicable, so it seems worth asking.
Thank you!
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
The issue names no files, tests, or entry points. Start by assessing the package's current build and wheel-publication configuration against the proposed abi3 and abi3t stages; done would be a maintainer decision on feasibility with a scoped implementation plan.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- build-system
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100