python-pillow / python-pillow/Pillow

Supporting future-portable build targets (PEP 803 limited API)

Open
#9,836 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Build
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 abi3 as a build target
  • publish abi3 nightlies
  • publish abi3 wheels to PyPI (in addition to version-specific ones)
  • support abi3t as a build target
  • publish abi3t nightlies
  • publish abi3t wheels 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.