Skip to content

feat(python): support CPython 3.14 and free-threaded builds - #5

Merged
muthmann merged 1 commit into
mainfrom
feat/python-3.14-support
Aug 12, 2026
Merged

feat(python): support CPython 3.14 and free-threaded builds#5
muthmann merged 1 commit into
mainfrom
feat/python-3.14-support

Conversation

@muthmann

Copy link
Copy Markdown
Owner

Summary

  • upgrade the Python bindings to PyO3 0.29 and numpy 0.29
  • support standard and free-threaded CPython 3.14 without re-enabling the GIL
  • replace removed Python::allow_threads calls with Python::detach
  • add CPython 3.14 and 3.14t CI coverage and release wheels
  • test free-threaded imports, independent parallel decoders, and shared read-only event access
  • document the supported concurrency model and raise the Python binding MSRV to Rust 1.83

User impact

Users can install interpreter-specific wheels for both CPython 3.14 variants. On free-threaded CPython, importing evt3 keeps the GIL disabled. Independent decoder instances can run concurrently; shared NumPy arrays are supported for concurrent read-only access.

Validation

  • cargo fmt --all -- --check
  • cargo clippy --all-targets -p evt3-core -p evt3-cli -p evt3-python -- -D warnings
  • cargo test --workspace
  • cargo check -p evt3-python with Rust 1.83
  • CPython 3.9 synthetic suite: 18 passed
  • CPython 3.14 synthetic suite: 18 passed
  • CPython 3.14t synthetic and free-threading suite: 21 passed
  • built and inspected cp314 and cp314t release wheels
  • validated the CI and release workflow YAML

Closes #3

@muthmann
muthmann marked this pull request as ready for review August 12, 2026 14:06
@muthmann
muthmann merged commit 8f36262 into main Aug 12, 2026
18 checks passed
@muthmann
muthmann deleted the feat/python-3.14-support branch August 12, 2026 15:00
@muthmann muthmann mentioned this pull request Aug 12, 2026
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.

Python 3.14 Compat

1 participant