Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Add cp315t (free-threaded CPython 3.15) wheels — PyO3 0.28 makes this nearly free

Open
#10,291 0 comments 0 reactions 0 assignees View on GitHub

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
Tech stack
github-actions, python, rust
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

feature
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 current cp310-abi3 wheels 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 declares Py_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 lance triggers no warning and sys._is_gil_enabled() stays False — 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.dataset object, 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 use git clone or re-create them; and protoc needs the well-known google/protobuf includes 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

Open in Codespaces

Starts the project's dev container in your browser, under your own GitHub account.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from lance-format/lance

All issues in lance-format/lance

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.