Conversation
luhenry
added a commit
that referenced
this pull request
Sep 25, 2026
Contributor
|
luhenry
force-pushed
the
scalene
branch
2 times, most recently
from
September 26, 2026 00:39
041925f to
9130a38
Compare
Build scalene from the v2.3.0 checkout with cibuildwheel, mirroring upstream's build-and-upload job (make vendor-deps, then a setuptools wheel repaired by auditwheel) and running upstream's tests.yml suite plus the free-threaded parity script against the built wheel. - Pin Heap-Layers to the commit the released sdist ships instead of the HEAD `make vendor-deps` would clone. - Stage the licences of libunwind, printf and Heap-Layers, which are compiled into the wheel, and assert them from the test command. - Patch the pure-Python architecture allowlist that otherwise turns memory profiling off on riscv64. - Run test_coverup_30.py::test_scalene_cpu_count in its own session: it constructs the profiler in-process, which leaves sys.executable wrapped in a scalene launcher for the rest of the session. Every later memory test then skips (on x86_64 too) and the scalene-subprocess tests overrun their fixed timeouts on riscv64.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
scalene2.3.0Compiles the
libscalene.somalloc interposer (Heap-Layers), thepywhere/get_line_atomicextensions and a libunwind-based native stack unwinder. Upstream publishes no riscv64 wheel.Mirrors upstream's
build-and-upload.ymlandtests.yml.Differs from upstream
make vendor-depsclones HEAD, which has moved since.Matrix: cp312/cp313/cp314 - upstream ships no free-threaded wheel.
Testing
testextra) dropped - no riscv64 wheels; their tests skip.test_combined_stacks_guitests deselected - they read the TypeScript sources from the checkout.test_native_stacksgets the wheel's site-packages onPYTHONPATH- it re-runssys._base_executable, outside the test venv.test_coverup_30.py::test_scalene_cpu_countdeselected - it starts a profiler in-process that wrapssys.executablefor every later test, so all memory tests skip (x86_64 too) and subprocess tests overrun their timeouts on riscv64.test/test_timers.pyignored - a demo script with no tests whose import leaves a 1 sSIGALRMtimer running; it kills pytest during the slower riscv64 shutdown (exit 142).test_core_utilization_within_bounds_under_blas_loaddeselected - its BLAS workload overruns the fixed 300 s timeout on the runner.test_memory_stacks_split_across_two_callersdeselected - one of three memory samples lands onmake_small'sdefline instead of the allocator's; the other two bigmem tests pass.test/test_freethreaded_parity.pynot run - its 8-thread scaling phase overruns a fixed 180 s budget per profiled run on the runner.License: Wheel compiles in libunwind (MIT), printf (MIT) and Heap-Layers (Apache-2.0); upstream ships no licence text for them, so the build adds it.
Patches
0001-Allow-memory-profiling-on-riscv64.patch- To upstream. A Python arch allowlist silently disables--memoryon riscv64, failing every memory test; reproduces on x86 by dropping x86_64 from the list.Built on cp312/cp313/cp314; 448 passed, 15 skipped each.