Skip to content

json-tools-rs: Add version 0.9.30 - #2107

Merged
luhenry merged 3 commits into
mainfrom
port/json-tools-rs
Sep 19, 2026
Merged

luhenry merged 3 commits into
mainfrom
port/json-tools-rs

Conversation

@luhenry

@luhenry luhenry commented Sep 19, 2026

Copy link
Copy Markdown
Member

Compiles the crate's PyO3 extension: JSON flatten/unflatten with SIMD parsing, Rayon parallelism and Arrow-backed DataFrame support. Upstream publishes no riscv64 wheel.

Mirrors the linux job of upstream's maturin-ci.yml.

Differs from upstream

  • cibuildwheel instead of maturin-action - the repo's standard riscv64 shape.
  • Only manylinux, no musllinux - rustup.rs ships no riscv64 musl toolchain.
  • Rust toolchain installed in-container via rustup - upstream's maturin-action does this itself.

Matrix: cp312/cp313/cp314; no cp314t because orjson, a hard runtime dependency, publishes no free-threaded wheel on PyPI or pypi.riseproject.dev.

Testing

  • same as upstream

License: OK

Built on cp312; 215 passed, 129 skipped.

json-tools-rs is a maturin/PyO3 extension (SIMD JSON flatten/unflatten with
Rayon parallelism and Arrow-backed DataFrame support). Upstream publishes
wheels for x86_64/x86/aarch64/armv7/ppc64le but none for riscv64.

Based on the `linux` job of upstream's maturin-ci.yml, narrowed to
manylinux_riscv64: musllinux is dropped because rustup.rs ships no riscv64
musl toolchain, and cibuildwheel replaces maturin-action so the Rust
toolchain is installed in-container.

pyo3 0.29 carries no abi3 feature, so the build is per-interpreter. cp314t is
left out: orjson, a hard runtime dependency, publishes no free-threaded wheel
on PyPI or pypi.riseproject.dev.
Every port has to settle which interpreters its dependencies actually resolve
for on riscv64 before writing the matrix, and the pip incantation for it is
easy to get wrong: the manylinux_2_NN_riscv64 platform list differs per wheel,
and without `--abi abi3 --abi none` pip rejects every abi3 and py3-none-any
wheel so a resolvable set looks impossible.

This wraps it as a loop over interpreter tags, printing the wheel each
requirement resolves to or naming the interpreters to drop. json-tools-rs is
the first user: it reports cp312/cp313/cp314 ok and cp314t unresolvable,
because orjson publishes no free-threaded wheel.
luhenry added a commit that referenced this pull request Sep 19, 2026
luhenry added a commit that referenced this pull request Sep 19, 2026
Resolves a port's requirements for riscv64, per interpreter, against PyPI
and our registry - answers "which interpreters can this port actually
test on" before burning a CI cycle discovering a dependency caps the
matrix. Landed here directly rather than riding along in a package PR
(json-tools-rs, PR #2107), per the skill's own new-file scope rule.
General-purpose tooling doesn't belong in a package port PR (the skill's
own rule: a port adds files only under .github/workflows/, docs/packages/
and patches/). Landed on main directly instead.
@github-actions

github-actions Bot commented Sep 19, 2026

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-09-19 17:17 UTC

@luhenry
luhenry merged commit 1874dcb into main Sep 19, 2026
11 checks passed
@luhenry
luhenry deleted the port/json-tools-rs branch September 19, 2026 16:44
luhenry added a commit that referenced this pull request Sep 19, 2026
… from PR #2110

json-tools-rs (#2107), fastecdsa (#2109), cvxopt (#2110), opencv-contrib-python-headless
(#2111), nvtx (#2113) and bitsandbytes (#2094) were all merged by the maintainer while
in-flight; .queue.yml still read in-review. Also found and stripped a leftover
'Generated by Claude Code' footer from #2110's description via the GitHub API -
same issue already fixed on #2094/#2104/#2116.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant