Skip to content

xy: Add version 0.0.8 - #3160

Merged
luhenry merged 4 commits into
mainfrom
xy
Nov 3, 2026
Merged

luhenry merged 4 commits into
mainfrom
xy

Conversation

@luhenry

@luhenry luhenry commented Oct 14, 2026 •

Copy link
Copy Markdown
Member

Compiles the Rust xy_core cdylib that the Python package loads through ctypes, so one py3-none wheel serves every interpreter. Upstream publishes no riscv64 wheel.

Mirrors upstream's build_release_artifacts.yml.

Differs from upstream

  • Native cargo build in the manylinux image instead of zig cross-compile - riscv64 runner builds natively
  • Wheel built from upstream's own sdist job output - the sdist carries the Node-built render client
  • No musllinux - rustup ships no riscv64 musl host toolchain

Testing

  • Upstream's verify_wheel.py --expect-native and native-backend import check, as in its release workflow
  • Adds a subset of tests/ covering the kernels and exporters; the rest need Chromium, Node or repo scripts
  • reflex extra not installed in the smoke - not needed to exercise the core

License: OK

Locally on x86_64 from the same sdist: 727 passed, 3 skipped.

luhenry added a commit that referenced this pull request Oct 14, 2026
@luhenry
luhenry marked this pull request as draft October 14, 2026 11:32
cibuildwheel extracts a .tar.gz package-dir to its own temp directory and
chdirs the whole build into it, so CIBW_TEST_SOURCES (resolved against the
new cwd) never saw the tests/ staged at the checkout root; the job built
and installed the wheel fine and only failed ~34 minutes in, in testing,
with "cibuildwheel: Test source tests does not exist." Extracting the
sdist ourselves and pointing package-dir at the resulting directory keeps
the build rooted where the rest of the job expects it.
The riscv64 build job failed in the 'Verify wheel contents' step for
every leg, all 2 hours in: scripts/verify_wheel.py's
_require_filename_tag compares the wheel filename's platform segment
against WHEEL's Tag: lines as one string, but auditwheel repairs a
riscv64 wheel to the compressed tag set
manylinux_2_34_riscv64.manylinux_2_39_riscv64 (its policy floor sits
below the manylinux_2_39 build image), which WHEEL still lists as two
separate Tag: lines. Neither side is wrong; the comparison is
(gotcha 510 in the porting skill's references).

Patches scripts/verify_wheel.py (checked out fresh from reflex-dev/xy,
not carried in our sdist) to split the filename's platform segment on
'.' and check each resulting tag individually, which keeps the
single-tag case unchanged. Verified against the actual failing
filename/WHEEL-tags pair from run 38733621391, plus the single-tag and
genuinely-missing-tag cases, with the patched function imported
directly.
The riscv64 job failed in cibuildwheel's test-requires install: pillow
13.0.0 and numpy 2.5.4 are on PyPI as sdists with no riscv64 wheel,
and pip resolves to the newest version across both indexes, so it took
them over the registry's pillow 12.3.0 / numpy 2.5.3 wheels and built
them from source. numpy compiled (19 minutes for cp312 alone); pillow
died on missing libjpeg headers.

PIP_ONLY_BINARY=numpy,pillow in CIBW_TEST_ENVIRONMENT makes pip stop at
the newest registry wheel instead (gotcha 210).
@luhenry
luhenry marked this pull request as ready for review November 2, 2026 11:35
@luhenry
luhenry merged commit d39510c into main Nov 3, 2026
7 checks passed
@luhenry
luhenry deleted the xy branch November 3, 2026 02:25
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