Feat/enable free threaded python#213
Conversation
There was a problem hiding this comment.
Pull request overview
This PR adds initial support for CPython’s free-threaded (GIL-disabled) builds in mkl-service, and (as a prerequisite / in anticipation of PR #174) migrates the build and packaging flow from setuptools/setup.py to meson-python across pip/CI/conda recipes.
Changes:
- Enable free-threading compatibility in the Cython extension and declare the
_mklinitC extension as GIL-independent for free-threaded interpreters. - Switch to
meson-python(meson.build,pyproject.toml) and removesetup.py. - Update CI workflows and conda recipes to build via PEP 517 / Meson and expand Python coverage to 3.14.
Reviewed changes
Copilot reviewed 19 out of 19 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| setup.py | Removed legacy setuptools build script. |
| pyproject.toml | Switch build backend to mesonpy and update build requirements. |
| meson.build | New Meson build defining _mklinit and _py_mkl_service extension builds and install layout. |
| mkl/_py_mkl_service.pyx | Mark Cython extension as free-threading compatible. |
| mkl/_mklinitmodule.c | Declare module GIL usage as “not used” on free-threaded builds. |
| README.md | Add source build instructions for Meson/PEP517 flow. |
| AGENTS.md | Update repo-level build/CI documentation to Meson + new workflows. |
| mkl/AGENTS.md | Update Cython wrapper file naming references. |
| .github/workflows/build-with-clang.yml | Update CI build steps for Meson/PEP517 and Python 3.14. |
| .github/workflows/build-with-standard-clang.yml | New workflow to build/test with system clang. |
| .github/workflows/build_pip.yml | New workflow to validate pip editable build + tests via conda env. |
| conda-recipe/meta.yaml | Update host deps for Meson/PEP517 and remove python-gil constraints. |
| conda-recipe/build.sh | Build via python -m build instead of setup.py; clean build dir. |
| conda-recipe/bld.bat | Build via python -m build instead of setup.py. |
| conda-recipe-cf/meta.yaml | Update host deps for Meson/PEP517 and remove python-gil constraints. |
| conda-recipe-cf/build.sh | Build/install via pip (PEP517) instead of setup.py. |
| conda-recipe-cf/bld.bat | Build/install via pip (PEP517) instead of setup.py. |
| .github/copilot-instructions.md | Update API-contract file reference to _py_mkl_service.pyx. |
| .github/AGENTS.md | Document newly added workflows. |
Comments suppressed due to low confidence (1)
mkl/_py_mkl_service.pyx:28
- Free-threading support is being enabled here, but there’s no corresponding test ensuring the package imports/operates correctly under a free-threaded (GIL-disabled) Python build (e.g., that importing
mkldoes not re-enable the GIL and basic API calls still work). Adding a small conditional test inmkl/tests/test_mkl_service.pywould help prevent regressions.
|
the copilot review comments are basically on the meson python PR #174 |
| - name: Install mkl-service dependencies | ||
| run: | | ||
| pip install meson-python cython cmake ninja | ||
| pip install meson-python "cython>=3.1.0" cmake ninja |
There was a problem hiding this comment.
Could you please add to the PR description, why we need to limit cython version?
| - cmake | ||
| - ninja | ||
| - python | ||
| - python-build |
There was a problem hiding this comment.
Why there is no need to have >=1.2.2 anymore?
| - name: Install mkl-service dependencies | ||
| run: | | ||
| pip install meson-python cython cmake ninja | ||
| pip install meson-python "cython>=3.1.0" cmake ninja |
There was a problem hiding this comment.
Do we need to update Build dependencies in AGENTS.md to state Cython 3.1+ is required?
| @@ -55,7 +55,7 @@ jobs: | |||
|
|
|||
There was a problem hiding this comment.
Need to populate changelog
| - ninja | ||
| - python | ||
| - python-build | ||
| - python-gil # [py>=314] |
There was a problem hiding this comment.
Why did we keep python-gil here but removed in cf receipe?
| "Programming Language :: Python :: 3.11", | ||
| "Programming Language :: Python :: 3.12", | ||
| "Programming Language :: Python :: 3.13", | ||
| "Programming Language :: Python :: 3.14", |
There was a problem hiding this comment.
missed to declare the support in metadata:
| "Programming Language :: Python :: 3.14", | |
| "Programming Language :: Python :: Free Threading :: 2 - Beta", |
| @@ -55,7 +55,7 @@ jobs: | |||
|
|
|||
There was a problem hiding this comment.
Need to extend strategy matrix for GitHub workflows to validate 3.14t also
This PR might look weird until meson python PR is merged
The latest commit adds the Free threading support for mkl-service