Add cp315t (free-threaded CPython 3.15) wheels — PyO3 0.28 makes this nearly free
Maintainers usually reply within 3 days
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 52/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Active
- Domain
- build-system
Research direction
Start by reading the release workflow and wheel build matrix; the issue does not name their file paths, so locate them in the repository. Check how existing Python and platform targets are built, then determine how to add the cp315t target while accounting for the Windows symlink and PROTOC_INCLUDE notes. Done means release builds produce installable cp315t wheels for the supported platforms.
Written by the indexing model from the issue text.
Description
What
Please add CPython 3.15 free-threaded (cp315t) wheels to the pylance release matrix.
Why
- CPython 3.15.0 ships officially supported free-threaded builds (PEP 779). Free-threaded CPython uses a dedicated ABI (
cp315t) and cannot use abi3/stable-ABI wheels (the limited API is unsupported in free-threaded builds), so the currentcp310-abi3wheels cannot cover 3.15t users. - pylance publishes no sdist, so 3.15t users currently cannot pip-install pylance at all — they must build from a GitHub checkout themselves.
- Your build stack makes this nearly free: PyO3 0.28 has first-class free-threading support. When built against a free-threaded interpreter without the
abi3-*feature, PyO3 automatically declaresPy_MOD_GIL_NOT_USED— the extension runs natively without the GIL.
Evidence
I built pylance from the main checkout (15.0.0b1, PyO3 0.28) against CPython 3.15.0t on Windows 11 x64 with maturin 1.15.0:
maturin build --release --interpreter <3.15t>succeeds unmodified →pylance-15.0.0b1-cp315-cp315t-win_amd64.whl- With a GIL guard installed (which turns "GIL has been enabled" warnings into errors),
import lancetriggers no warning andsys._is_gil_enabled()staysFalse— the wheel declares itself free-threading-safe and runs natively GIL-free. - A 12-thread stress test passes with zero errors: concurrent writes to independent datasets, concurrent full-table reads through one shared
lance.datasetobject, and concurrent filtered scans — all with exact row counts.
The rest of the scientific stack (numpy, pandas, pyarrow, ...) already publishes cp315t wheels, so adding one more target to the release matrix is a low-cost change that unlocks the growing free-threaded user base.
Environment
- Windows 11 x86_64, CPython 3.15.0 free-threaded, maturin 1.15.0, Rust 1.95 (rustup pulled the repo-pinned 1.98.1 toolchain)
- Windows CI note: GitHub tarballs' directory symlinks (e.g.
protos) do not survive extraction — CI should usegit cloneor re-create them; and protoc needs the well-knowngoogle/protobufincludes supplied explicitly (PROTOC_INCLUDE) on Windows.
- Dominant language
- Rust
- Stars
- 7.2k
- Forks
- 900
- Avg merge
- 4d 22h
- Merged PRs (30d)
- 366
Getting set up
Starts the project's dev container in your browser, under your own GitHub account.
- Ships a Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from lance-format/lance
-
documentation
Difficulty 1/5 Under an hour Newbie friendliness 78/100
lance-format/lance#10225 ·
Maintainers usually reply within 3 days
-
feature performance
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
lance-format/lance#10137 ·
Maintainers usually reply within 3 days
-
After initialize_mem_wal, every FTS query logs "ERROR Index __lance_mem_wal has no fields"Possibly taken @lance-gatefixer claimed this 24 days ago. Openbug
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
lance-format/lance#9655 ·
Maintainers usually reply within 3 days
-
Upgrade DataFusion for the unparser stack-overflow fixMay be free again A pull request for this issue was closed without being merged. Open
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
lance-format/lance#8225 ·
Maintainers usually reply within 3 days
-
enhancement
Difficulty 1/5 Under an hour Newbie friendliness 84/100
lance-format/lance#6425 · 2 comments ·
Maintainers usually reply within 3 days
All issues in lance-format/lance
Similar issues
-
Difficulty 1/5 Under an hour Newbie friendliness 75/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
manuscript-lang/manuscript#1364 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
fable-compiler/Fable#5157 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 73/100
Maintainers usually reply within 1 day
-
C-bug needs-triage O-UEFI T-libs
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day