Publish free-threaded (cp313t/cp314t) wheels for macOS and Windows
- Dominant language
- C++
- Stars
- 14.1k
- Forks
- 2.5k
- Avg merge
- 8h 39m
- Merged PRs (30d)
- 72
Description
**What language and solver does this apply to?**
Python (packaging/wheels)
**Describe the problem you are trying to solve.**
Since 9.12, free-threaded wheels (cp313t, and cp314t as of 9.15) are published on PyPI, but only for Linux (manylinux x86_64/aarch64). There are no free-threaded wheels for macOS or Windows, so packages that depend on ortools cannot support free-threaded Python on those platforms without building OR-Tools from source.
For example, [k-means-constrained](https://github.com/joshlk/k-means-constrained) depends on `ortools.graph.python.min_cost_flow` and is adding free-threaded (3.14t) wheels for true multi-threaded solving — those wheels can currently only be published for Linux because of this gap.
**Describe the solution you'd like**
Publish cp313t/cp314t wheels for macOS (x86_64 and arm64) and Windows (amd64) alongside the existing regular wheels, matching the platform coverage of the non-free-threaded builds.
**Describe alternatives you've considered**
Building OR-Tools from source in downstream CI, which is a heavy full C++ build and impractical for most dependent packages.
**Additional context**
Related: #4438 (original 3.13t wheel request) and #5243, which adds the `Py_mod_gil_not_used` declaration to the graph modules so importing them keeps the GIL disabled on free-threaded builds.
Contributor guide
Research direction
Start by locating the configuration that publishes the existing regular OR-Tools wheels and compare its Linux, macOS, and Windows build matrices. Check how cp313t and cp314t are represented alongside regular builds, then verify that the resulting artifacts cover macOS x86_64 and arm64 and Windows amd64 before publication to PyPI.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp, python
- Domain
- build-system, release
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100