Skip to content
This repository was archived by the owner on Oct 30, 2026. It is now read-only.
This repository was archived by the owner on Oct 30, 2026. It is now read-only.

fix(embedded): build abi3 wheel for Python 3.11+ compatibility #65

Closed

Description

@polaz

Problem

coordinode-embedded is published only with cp311 wheels for Linux. Google Colab runs Python 3.12, so pip cannot find a compatible wheel and installation fails.

CalledProcessError: Command 'pip install coordinode-embedded' returned non-zero exit status 1

Root Cause

pyo3 in coordinode-embedded/Cargo.toml uses the default per-interpreter ABI. maturin builds one wheel per Python interpreter found on the runner. CI uses Python 3.11 for Linux builds → only cp311 wheels.

Solution

Enable abi3 stable ABI via abi3-py311 feature flag on pyo3. maturin detects this automatically and builds a single cp311-abi3 wheel per platform that works on Python 3.11, 3.12, 3.13, 3.14+.

One-line change: coordinode-embedded/Cargo.toml

Acceptance Criteria

  • cp311-abi3 wheel on PyPI for Linux x86_64, Linux aarch64, macOS arm64, macOS x86_64, Windows x86_64
  • pip install coordinode-embedded succeeds on Colab (Python 3.12)

Activity

  1. coderabbitai commented on May 3, 2026

    @coderabbitai
    🔗 Related PRs

    #8 - fix(coordinode): fix empty wheel — use sources mapping instead of packages [merged]
    #40 - ci(release): fix embedded wheel builds for Windows, macOS, and Linux aarch64 [merged]
    #58 - fix(ci): set PYO3_CROSS_PYTHON_VERSION for aarch64 Linux cross-compilation [merged]
    #60 - fix(ci): remove PYO3_CROSS_PYTHON_VERSION, use pypa manylinux image for aarch64 [merged]
    #64 - fix(demo): install coordinode-embedded from PyPI wheel, drop rustup/Rust build [closed]


    📝 Issue Planner

    Check the box below or use the @coderabbitai plan command to generate an implementation plan and prompts that you can use with your favorite coding assistant.

    • Create Plan

    🧪 Issue enrichment is currently in open beta.

    You can configure auto-planning by selecting labels in the issue_enrichment configuration.

    To disable automatic issue enrichment, add the following to your .coderabbit.yaml:

    issue_enrichment:
      auto_enrich:
        enabled: false

    💬 Have feedback or questions? Drop into our discord!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions