Python 3.15 is now in beta (3.15.0b3 as of June 2026), so it's time to start evaluating what CrossHair needs in order to support it. CrossHair is unusually sensitive to CPython minor-version changes because it (a) intercepts bytecode opcodes and (b) ships a C extension (crosshair/_tracers.c) that pokes at interpreter internals, so each new minor version tends to require a porting pass.
This is a tracking issue to scope the work. Areas to evaluate:
- C tracer opcode table (
crosshair/_tracers.c) — version-gated PY_VERSION_HEX branches for the set of intercepted opcodes.
- Python-side opcode interception (
crosshair/opcode_intercept.py, crosshair/tracers.py) — check_opcode_support() and the version gates around CALL/BUILD_MAP/etc.
- C API surface in
_tracers.c vs. APIs removed/deprecated in 3.15.
- stdlib
libimpl/ patches that gate on sys.version_info and may need a >= (3, 15) arm.
- CI / packaging — add 3.15 to the test matrix and trove classifiers (currently capped at 3.13 in
pyproject.toml, though code already handles 3.14).
- Dependencies — confirm
z3-solver and other deps publish 3.15 wheels.
Initial evaluation to follow in a comment.
Python 3.15 is now in beta (3.15.0b3 as of June 2026), so it's time to start evaluating what CrossHair needs in order to support it. CrossHair is unusually sensitive to CPython minor-version changes because it (a) intercepts bytecode opcodes and (b) ships a C extension (
crosshair/_tracers.c) that pokes at interpreter internals, so each new minor version tends to require a porting pass.This is a tracking issue to scope the work. Areas to evaluate:
crosshair/_tracers.c) — version-gatedPY_VERSION_HEXbranches for the set of intercepted opcodes.crosshair/opcode_intercept.py,crosshair/tracers.py) —check_opcode_support()and the version gates around CALL/BUILD_MAP/etc._tracers.cvs. APIs removed/deprecated in 3.15.libimpl/patches that gate onsys.version_infoand may need a>= (3, 15)arm.pyproject.toml, though code already handles 3.14).z3-solverand other deps publish 3.15 wheels.Initial evaluation to follow in a comment.