Skip to content

ci: add riscv64 manylinux/musllinux wheels #3545

@justeph

Description

@justeph

Proposed new feature or change:

I'm opening this issue to start the discussion on what it would take to get the tornado project to build and distribute riscv64 manylinux images.

Why now?

Until recently, it wasn't really possible for Python projects to build binary riscv64 wheels and to distribute those wheels via PyPI. Manylinux and cibuildwheel did not support riscv64 and PyPI did not allow riscv64 wheels to be uploaded. This all changed during the summer of 2025, when cibuildwheel (3.12), manylinux and warehouse all gained riscv64 support. Encouragingly, some projects (lxml, uv, maturin, and critically ninja) have already started uploading riscv64 wheels to PyPI.

Does tornado work on riscv64?

Yes. RISE has been building and distributing tornado manylinux wheels for riscv64 for over a year (since version 6.4.1). Tested builds are available for riscv64 here.

What needs to be done?

If I am correct, there is no available native riscv-64 runner in GitHub. So build and test will involve emulation though QEMU. I already did some tests on my end and we need to:

  • skip test_unquote_large and test_request_timeout
  • increase ASYNC_TEST_TIMEOUT to 30 seconds because of emulation

Only a few additions to the github action file is needed to build and test a riscv64 wheel.
We also need a fairly recent version of cibuildwheel, to fix python 3.14 issues on riscv64

Note: riscv64 builds are slower due to emulation and currently take about 30 minutes.

I have a PR ready for review.

How can RISE help?

RISE is aware of the additional burden of supporting a new architecture, as mentioned scientific-python/summit-2025-nov#4. The RISE project should be able to assist by providing engineering resources, to debug riscv64 specific issues, and potentially native riscv64 runners, if required.

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