Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 18 additions & 2 deletions .github/workflows/release-python.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ concurrency:

env:
PYTHON_VERSION: '3.10'
PYTHON_VERSION_LINUX_RISCV64: '3.11'
PYTHON_VERSION_WIN_ARM64: '3.11' # ARM64 Windows doesn't have older versions
CARGO_INCREMENTAL: 0
CARGO_NET_RETRY: 10
Expand Down Expand Up @@ -153,7 +154,7 @@ jobs:
fail-fast: false
matrix:
package: [polars-runtime-32, polars-runtime-64, polars-runtime-compat]
job_config: [linux-x64, linux-arm64, linux-musl-x64, linux-musl-arm64, macos-x64, macos-arm64, win-x64, win-arm64]
job_config: [linux-x64, linux-arm64, linux-riscv64, linux-musl-x64, linux-musl-arm64, linux-musl-riscv64, macos-x64, macos-arm64, win-x64, win-arm64]
include:
- job_config: linux-x64
os: ubuntu-latest
Expand All @@ -163,6 +164,10 @@ jobs:
os: linux-arm-large
architecture: aarch64
target: aarch64-unknown-linux-gnu
- job_config: linux-riscv64
os: ubuntu-24.04-riscv
architecture: riscv64
target: riscv64gc-unknown-linux-gnu
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there any reason to be this pessimistic when it comes to extensions? These are Linux only anyway, and I would guess that for high-performance applications you would want to, definitely, have B (Bit Manipulation) and V (Vector). In general, I would just follow RVA23 for now since that is what most Linux-capable SBCs are targeting.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not opposed to advancing the spec that we build wheels against, but for now I think this is the right place to start - it's consistent with most other projects building for riscv64, including uv and maturin itself.

I think it would be better to start with riscv64gc and follow up with another change to riscv64a23 once more RVA23-based platforms are actually available to users.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's also worth noting that doing so before manylinux catches up to RVA23 as the default would make any wheels built be noncompliant with that standard: https://peps.python.org/pep-0600/

- job_config: linux-musl-x64
os: ubuntu-latest
architecture: x86-64
Expand All @@ -171,6 +176,10 @@ jobs:
os: linux-arm-large
architecture: aarch64
target: aarch64-unknown-linux-musl
- job_config: linux-musl-riscv64
os: ubuntu-24.04-riscv
architecture: riscv64
target: riscv64-unknown-linux-musl
- job_config: macos-x64
os: macos-15-intel
architecture: x86-64
Expand Down Expand Up @@ -263,7 +272,7 @@ jobs:
swap-size-gb: 10

- name: Set up Python
if: matrix.os != 'windows-11-arm'
if: matrix.os != 'windows-11-arm' && matrix.os != 'ubuntu-24.04-riscv'
uses: actions/setup-python@v6
with:
python-version: ${{ env.PYTHON_VERSION }}
Expand All @@ -274,6 +283,13 @@ jobs:
with:
python-version: ${{ env.PYTHON_VERSION_WIN_ARM64 }}

- name: Set up Python (RISCV64 Linux)
if: matrix.os == 'ubuntu-24.04-riscv'
uses: riseproject-dev/setup-python@8b57351c0f828145e2ac14bd328c731503361b7a
with:
python-version: ${{ env.PYTHON_VERSION_LINUX_RISCV64 }}
mirror: https://raw.githubusercontent.com/riseproject-dev/python-versions/main

# Otherwise can't find `tomlq` after `pip install yq`
- name: Add Python scripts folder to GITHUB_PATH (ARM64 Windows)
if: matrix.os == 'windows-11-arm'
Expand Down