Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions .github/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
CI/CD workflows, automation, security scanning, and package distribution.

## Workflows
All build/test workflows cover Python 3.10-3.14 plus free-threaded 3.14t.
All build/test workflows cover Python 3.10-3.15 plus free-threaded 3.14t.

- **conda-package.yml** — main build/test pipeline (Linux/Windows)
- **conda-package-cf.yml** — build/test using only conda-forge channel (Linux/Windows)
Expand All @@ -17,8 +17,9 @@ All build/test workflows cover Python 3.10-3.14 plus free-threaded 3.14t.
- Keep build matrix (Python versions, platforms) in workflow files only
- Required checks: conda build + test on supported Python versions/platforms in CI
- Python 3.14 is expressed as two `include` rows carrying `python_spec` (`3.14.* *_cp314` and `3.14.* *_cp314t`); a bare `--python 3.14` has been observed to select the free-threaded ABI and must not be relied on
- Python 3.15 is GIL-only for now (conda-forge's `python315` migration ships `*_cp315` but not `*_cp315t`); conda jobs pin the ABI explicitly with `python_spec: '3.15.* *_cp315'` to stay robust if a free-threaded `3.15t` build appears later
- `include` rows create new matrix combinations and inherit nothing, so `experimental` must be repeated wherever the job reads them
- Artifact naming: `$PACKAGE_NAME $OS Python $VERSION`, where `$VERSION` is `python_tag` (`3.14` or `3.14t`) when set, otherwise `python`
- Artifact naming: `$PACKAGE_NAME $OS Python $VERSION`, where `$VERSION` is `python_tag` (`3.14`, `3.14t`, or `3.15`) when set, otherwise `python`
- Channels: `conda-forge`, Intel channel

## Security
Expand Down
5 changes: 4 additions & 1 deletion .github/workflows/build-with-clang.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,9 @@ jobs:
runs-on: ubuntu-latest

strategy:
fail-fast: false
matrix:
python: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.14t"]
python: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.14t", "3.15"]

env:
ONEAPI_ROOT: /opt/intel/oneapi
Expand Down Expand Up @@ -47,6 +48,8 @@ jobs:
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: ${{ matrix.python }}
# allow the 3.15 release candidate until 3.15 is final
allow-prereleases: true
architecture: x64

- name: Checkout repo
Expand Down
5 changes: 4 additions & 1 deletion .github/workflows/build-with-standard-clang.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,9 @@ jobs:
runs-on: ubuntu-latest

strategy:
fail-fast: false
matrix:
python: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.14t"]
python: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.14t", "3.15"]

env:
COMPILER_ROOT: /usr/bin
Expand All @@ -38,6 +39,8 @@ jobs:
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: ${{ matrix.python }}
# allow the 3.15 release candidate until 3.15 is final
allow-prereleases: true
architecture: x64

- name: Checkout repo
Expand Down
6 changes: 5 additions & 1 deletion .github/workflows/build_pip.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,16 @@ jobs:
shell: bash -el {0}

strategy:
fail-fast: false
matrix:
python: ["3.10", "3.11", "3.12", "3.13"]
include:
- python: '3.14'
python_spec: '3.14.* *_cp314'
- python: '3.14'
python_spec: '3.14.* *_cp314t'
- python: '3.15'
python_spec: '3.15.* *_cp315'

steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
Expand All @@ -34,7 +37,8 @@ jobs:
- uses: conda-incubator/setup-miniconda@8ee1f361103df19b6f8c8655fd3967a8ecb162d5 # v4.0.1
with:
miniforge-version: latest
channels: conda-forge
# python_rc label carries the 3.15 release candidate; drop once 3.15 is final
channels: conda-forge,conda-forge/label/python_rc
activate-environment: test
python-version: ${{ matrix.python }}

Expand Down
12 changes: 10 additions & 2 deletions .github/workflows/conda-build-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,9 @@ jobs:
- python: '3.14'
python_spec: '3.14.* *_cp314t'
python_tag: '3.14t'
- python: '3.15'
python_spec: '3.15.* *_cp315'
python_tag: '3.15'

runs-on: ${{ inputs.runs-on }}
timeout-minutes: 15
Expand All @@ -78,7 +81,8 @@ jobs:
with:
miniforge-version: latest
activate-environment: ${{ env.build-env-name }}
channels: conda-forge
# python_rc label carries the 3.15 release candidate; drop once 3.15 is final
channels: conda-forge,conda-forge/label/python_rc
python-version: ${{ matrix.python }}

- name: Cache conda packages
Expand Down Expand Up @@ -142,6 +146,9 @@ jobs:
- python: '3.14'
python_spec: '3.14.* *_cp314t'
python_tag: '3.14t'
- python: '3.15'
python_spec: '3.15.* *_cp315'
python_tag: '3.15'

runs-on: ${{ inputs.runs-on }}
timeout-minutes: 15
Expand All @@ -167,7 +174,8 @@ jobs:
uses: conda-incubator/setup-miniconda@8ee1f361103df19b6f8c8655fd3967a8ecb162d5 # v4.0.1
with:
miniforge-version: latest
channels: conda-forge
# python_rc label carries the 3.15 release candidate; drop once 3.15 is final
channels: conda-forge,conda-forge/label/python_rc
activate-environment: ${{ env.test-env-name }}
python-version: ${{ matrix.python }}

Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/conda-package-cf.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
runs-on: ubuntu-latest
conda-subdir: linux-64
pkgs-dir: /home/runner/conda_pkgs_dir
channels-list: -c conda-forge --override-channels
channels-list: -c conda-forge -c conda-forge/label/python_rc --override-channels
recipe-dir: conda-recipe-cf

windows:
Expand All @@ -31,7 +31,7 @@ jobs:
runs-on: windows-latest
conda-subdir: win-64
pkgs-dir: D:\conda_pkgs_dir
channels-list: -c conda-forge --override-channels
channels-list: -c conda-forge -c conda-forge/label/python_rc --override-channels
recipe-dir: conda-recipe-cf

osx:
Expand All @@ -41,5 +41,5 @@ jobs:
runs-on: macos-26-intel
conda-subdir: osx-64
pkgs-dir: /Users/runner/conda_pkgs_dir
channels-list: -c conda-forge --override-channels
channels-list: -c conda-forge -c conda-forge/label/python_rc --override-channels
recipe-dir: conda-recipe-cf
4 changes: 2 additions & 2 deletions .github/workflows/conda-package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
runs-on: ubuntu-latest
conda-subdir: linux-64
pkgs-dir: /home/runner/conda_pkgs_dir
channels-list: -c https://software.repos.intel.com/python/conda -c conda-forge --override-channels
channels-list: -c https://software.repos.intel.com/python/conda -c conda-forge -c conda-forge/label/python_rc --override-channels
recipe-dir: conda-recipe
build-wheels: true

Expand All @@ -32,6 +32,6 @@ jobs:
runs-on: windows-latest
conda-subdir: win-64
pkgs-dir: D:\conda_pkgs_dir
channels-list: -c https://software.repos.intel.com/python/conda -c conda-forge --override-channels
channels-list: -c https://software.repos.intel.com/python/conda -c conda-forge -c conda-forge/label/python_rc --override-channels
recipe-dir: conda-recipe
build-wheels: true
3 changes: 2 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,9 @@ python -m pip install --no-deps --no-build-isolation .

## CI/CD
- **Platforms in CI workflows:** Linux, Windows, macOS (conda-forge workflow only)
- **Python versions:** 3.10, 3.11, 3.12, 3.13, 3.14, and free-threaded 3.14t
- **Python versions:** 3.10, 3.11, 3.12, 3.13, 3.14, 3.15, and free-threaded 3.14t
- **Python 3.14 ABI selection:** conda jobs must request an explicit ABI, `3.14.* *_cp314` (GIL) or `3.14.* *_cp314t` (free-threaded). Once the recipes stopped constraining `python-gil`, a bare `--python 3.14` was observed to resolve to the free-threaded build, so it must not be relied on.
- **Python 3.15:** GIL-only for now; conda-forge's `python315` migration provides `*_cp315` but no free-threaded `*_cp315t` yet. Conda jobs pin `3.15.* *_cp315` explicitly for the same ABI-selection reason as 3.14.
- **Workflows:** `.github/workflows/`
- `conda-package.yml` — main conda build/test pipeline
- `conda-package-cf.yml` — conda build/test using only conda-forge channel
Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [dev] (MM/DD/YYYY)

### Added
* Enabled support of Python 3.15 [gh-243](https://github.com/IntelPython/mkl-service/pull/243)
* Added support for free-threaded (GIL-disabled) CPython builds: the Cython extension is compiled with `freethreading_compatible=True` and `_mklinit` declares `Py_MOD_GIL_NOT_USED`, so importing `mkl` no longer re-enables the GIL [gh-213](https://github.com/IntelPython/mkl-service/pull/213)
* Added support for new build option `ilp64` to initialize MKL with the ILP64 interface, which also resolves some build warnings [gh-184](https://github.com/IntelPython/mkl-service/pull/184)

Expand Down
2 changes: 1 addition & 1 deletion conda-recipe/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Conda package build recipe for conda-forge and Intel channel distribution.

## Build configuration
- **Channels:** `conda-forge`, Intel channel
- **Python versions in CI build matrix:** 3.10, 3.11, 3.12, 3.13, 3.14, and free-threaded 3.14t
- **Python versions in CI build matrix:** 3.10, 3.11, 3.12, 3.13, 3.14, 3.15, and free-threaded 3.14t
- **Compilers:** pinned via `conda_build_config.yaml` (GCC/GXX on Linux, VS2022 on Windows)
- **Dependencies:** `mkl` (runtime), `mkl-devel` (build), `cython >=3.1.0`

Expand Down
3 changes: 2 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ classifiers = [
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: 3.15",
"Programming Language :: Python :: Free Threading :: 2 - Beta",
"Programming Language :: Python :: Implementation :: CPython",
"Topic :: Software Development",
Expand All @@ -62,7 +63,7 @@ keywords = ["MKL"]
license = "BSD-3-Clause"
name = "mkl-service"
readme = {file = "README.md", content-type = "text/markdown"}
requires-python = ">=3.10,<3.15"
requires-python = ">=3.10,<3.16"

[project.optional-dependencies]
test = ["pytest"]
Expand Down
Loading