Skip to content

Feat/enable free threaded python#213

Open
vchamarthi wants to merge 16 commits into
IntelPython:masterfrom
vchamarthi:feat/enable-free-threaded-python
Open

Feat/enable free threaded python#213
vchamarthi wants to merge 16 commits into
IntelPython:masterfrom
vchamarthi:feat/enable-free-threaded-python

Conversation

@vchamarthi

Copy link
Copy Markdown

This PR might look weird until meson python PR is merged

The latest commit adds the Free threading support for mkl-service

Copilot AI review requested due to automatic review settings June 23, 2026 14:05

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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 _mklinit C extension as GIL-independent for free-threaded interpreters.
  • Switch to meson-python (meson.build, pyproject.toml) and remove setup.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 mkl does not re-enable the GIL and basic API calls still work). Adding a small conditional test in mkl/tests/test_mkl_service.py would help prevent regressions.

Comment thread README.md
Comment on lines +37 to +44
A C compiler and Intel(R) OneAPI Math Kernel Library (OneMKL) are required to build mkl-service from source.

Executing
```sh
python -m pip install .
```

will pull in the required build and runtime dependencies, including `mkl`, and build `mkl-service`.
Comment thread AGENTS.md
Comment on lines 42 to +46
- `conda-package.yml` — main conda build/test pipeline
- `conda-package-cf.yml — conda build/test using only conda-forge channel
- `build-with-clang.yml` — Linux Clang compatibility
- `build-with-standard-clang.yml` — standard Clang compiler compatibility validation
- `build_pip` — validates editable build
Comment on lines 36 to +40
## Source-of-truth files
- Build/config: `pyproject.toml`, `setup.py`
- Recipe/deps: `conda-recipe/meta.yaml`, `conda-recipe/conda_build_config.yaml`
- CI: `.github/workflows/*.{yml,yaml}`
- API contracts: `mkl/__init__.py`, `mkl/_mkl_service.pyx`
- API contracts: `mkl/__init__.py`, `mkl/_py_mkl_service.pyx`
Comment thread meson.build

thread_dep = dependency('threads')

cc = meson.get_compiler('c')
Comment on lines +47 to +50
- name: Install mkl-service dependencies
run: |
pip install meson-python "cython>=3.1.0" cmake ninja mkl-devel

Comment on lines +11 to +15
env:
PACKAGE_NAME: mkl-service
MODULE_NAME: mkl-service
TEST_ENV_NAME: test_mkl_service

run: |
conda install mkl-devel mkl

- name: Build conda package
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