Skip to content

python_abi build 5: add free-threading track_features on t variants - #7

Merged
skupr-anaconda merged 12 commits into
mainfrom
add-free-threading-track-features
Sep 30, 2026
Merged

skupr-anaconda merged 12 commits into
mainfrom
add-free-threading-track-features

Conversation

@skupr-anaconda

@skupr-anaconda skupr-anaconda commented Sep 2, 2026 •

Copy link
Copy Markdown

python_abi - add free-threading track_features on t variants

Destination channel: defaults

Links

Explanation of changes:

  • Bump build number 4 → 6
  • Drop the parent track_features skip on cpython so t tags can carry a feature
  • t python_abi track_features match the interpreter:
  • Mix mutex is unchanged (run_constrained on python … *_{abi_tag})

Bump build number to 5 so t variants carry free-threading
(same feature name as python 3.14t on main).
Drop dummy python/numpy from recipe CBC and ignore the
aggregate python zip group (is_freethreading, is_python_min).
@skupr-anaconda skupr-anaconda changed the title add free-threading track_features on t variants python_abi build 5: add free-threading track_features on t variants Sep 2, 2026
3.13/3.14 t stay free-threading (python 3.14t on main).
3.15+ t use py_freethreading (python-feedstock PR 256).
Bump build 5 -> 6 so 3.15t rebuilds instead of skip-existing.
py<315 or t tagged GIL 3.14 and both names on 3.15t.
Require cpython t and split on python_version (no python zip).
@skupr-anaconda

skupr-anaconda commented Sep 7, 2026 •

Copy link
Copy Markdown
Author

Solver check (conda 26.1.1, --override-channels).

Channels: this PR pr7/f41e6fc · flit#23 265729d · numpy#163 db890fa · defaults.

Staging python_abi looks right: 5_cp314 / 5_cp315 have no feature; 5_cp314t is free-threading; 5_cp315t is py_freethreading.

What we ran Result
conda create flit-core or numpy (or both) normal Python (5_cp314)
python=3.14 normal Python
python-freethreading plus flit or numpy stays free-threaded
pin GIL / pin t matching ABI
GIL Python + t-only flit unsatisfiable
osx-arm64 flit / numpy same as linux (GIL)

Takeaway: mix is blocked, opt-in works. Bare create flit-core/numpy is GIL here because those t leaves are tagged, not because python_abi alone fixes libmamba (#1042). This PR is the mutex + the right feature name per Python version.

Anaconda CBC has no 3.13t row; free-threading starts at 3.14.
3.13t python_abi must not carry that feature. 3.15t stays
py_freethreading.
Comment on lines -47 to -71

# to help PBP generate a proper build graph
python:
- "3.10"
- "3.11"
- "3.12"
- "3.13"
- "3.13"
- "3.14"
- "3.14"
- "3.15"
- "3.15"
numpy:
- "2.1"
- "2.1"
- "2.1"
- "2.1"
- "2.1"
- "2.1"
- "2.1"
# TODO: numpy 2.6.0 is not released yet;
# upstream says py315 support starts with Python 3.15.0rc1 (~Jul 2026)
# keep 2.4 for now. Recheck when 2.6.0 is released.
- "2.5"
- "2.5"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If these were originally added to help with PBP generation, has something improved on the PBP side such that we can remove them?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It was needed a long time ago, but now it's already in a global cbc.yaml. It was a bug on PBP. I don't recall when it was fixes

Comment thread recipe/meta.yaml Outdated
Comment thread recipe/meta.yaml Outdated
Comment thread recipe/meta.yaml Outdated
skupr-anaconda and others added 2 commits September 8, 2026 13:12
Co-authored-by: Ian Fitchet <123584373+ifitchet@users.noreply.github.com>
@skupr-anaconda

Copy link
Copy Markdown
Author

@kilocode-bot review this PR

Comment thread recipe/meta.yaml
Comment on lines +27 to +33
# force_ignore_keys required for PBP. Ignore aggregate python zip_keys (numpy /
# is_freethreading / is_python_min) so this matrix does not collide.
force_ignore_keys:
- python
- numpy
- is_freethreading
- is_python_min

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have a question about this: given my experiments and the need for python to use is_freethreading in order to discriminate between 314 and 314t python variants at build and run time then I wonder if we're missing something here by "force ignoring" these keys?

Comment thread recipe/meta.yaml Outdated
Co-authored-by: Charles Bousseau <16641587+cbouss@users.noreply.github.com>
@skupr-anaconda
skupr-anaconda merged commit 34298cf into main Sep 30, 2026
74 of 75 checks passed
@skupr-anaconda
skupr-anaconda deleted the add-free-threading-track-features branch September 30, 2026 13:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants