Skip to content

[Bug]: cargo build/test --workspace fails on Python 3.14 (pyo3-ffi 0.23.5 max 3.13) #115

@chozandrias76

Description

@chozandrias76

Bug Description

cargo build --workspace (and therefore cargo test --workspace / just test) fails to compile the cupcake-py crate when the default Python interpreter is 3.14, because pyo3-ffi 0.23.5 supports a maximum of Python 3.13:

error: failed to run custom build command for `pyo3-ffi v0.23.5`
  ...
  error: the configured Python interpreter version (3.14) is newer than PyO3's maximum supported version (3.13)
  = help: please check if an updated version of PyO3 is available. Current version: 0.23.5
  = help: set PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 to suppress this check and build anyway using the stable ABI

This blocks the documented workspace build/test flow for any contributor whose system Python is 3.14.

Steps to Reproduce

  1. On a machine where python3 is 3.14 (e.g. current Arch/CachyOS)
  2. From the repo root, run cargo build --workspace (or just test)
  3. Build fails in pyo3-ffi as above.

Expected Behavior

The workspace builds/tests on Python 3.14, or the documented test command does not depend on a cupcake-py build that breaks on it.

Actual Behavior

cargo build/test --workspace aborts during pyo3-ffi build script. cargo ... --workspace --exclude cupcake-py succeeds, and the CLI (cargo build -p cupcake-cli) is unaffected — only cupcake-py is impacted.

Harness

N/A (build/test tooling)

Cupcake Version

0.5.2

Operating System

Linux

OS Version

CachyOS (Arch-based), CPython 3.14

Additional Context

Possible fixes:

  • Bump pyo3/pyo3-ffi to a release that supports Python 3.14.
  • Set PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 (and/or enable pyo3's abi3 feature) in CI and .cargo/config.toml.
  • Exclude cupcake-py from the default just test recipe and document a separate bindings-test command.

🤖 Written by Claude Opus 4.8, authorized by @chozandrias76

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions