Repository navigation
Conversation
f9ce65a to
64f0bff
Compare
Apple clang accepts the flag alone and rejects it only alongside -flto, so the check passed there and the build still failed (seen in #46). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012q87VyzNBV8gtH2ntMeKoM
64f0bff to
45896d6
Compare
-lquadmath was added to every link whenever the default LEAF_FLOAT_TYPE is f128, GMP builds included. macOS has no libquadmath, so buddy_gmp failed to link there (seen in #46). GMP links now use CLIBS_GMP. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012q87VyzNBV8gtH2ntMeKoM
45896d6 to
d14e5fd
Compare
ee81929 to
b1cde21
Compare
glibc declares roundf128, sqrtf128, powf128 and strfromf128 only for compilers it trusts with _Float128, which excludes clang, so f128 failed under clang (seen in #46). libm and libc export them regardless, and _Float128 and __float128 share one ABI on these targets. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012q87VyzNBV8gtH2ntMeKoM
b1cde21 to
cfdcd16
Compare
Found by the platform probe (#46): - GMP builds fail on GCC 14+ and clang ('implicit declaration of mpz_out_str'): headers are force-included, so gmp.h was read before stdio.h, and gmp.h declares its FILE functions only after stdio.h. Every header that includes gmp.h now includes stdio.h first. GCC 13 only warns, which is why tests.yml never noticed. - Apple clang rejects -ffat-lto-objects, so no release build worked on macOS. The flag is now added only where the compiler accepts it. - f128 without GCC's libquadmath (clang, arm64 macOS) failed on a bare 'quadmath.h not found'; it now stops with a message naming the leaf type and how to build another. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012q87VyzNBV8gtH2ntMeKoM
Apple clang accepts the flag alone and rejects it only alongside -flto, so the check passed there and the build still failed (seen in #46). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012q87VyzNBV8gtH2ntMeKoM
-lquadmath was added to every link whenever the default LEAF_FLOAT_TYPE is f128, GMP builds included. macOS has no libquadmath, so buddy_gmp failed to link there (seen in #46). GMP links now use CLIBS_GMP. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012q87VyzNBV8gtH2ntMeKoM
glibc declares roundf128, sqrtf128, powf128 and strfromf128 only for compilers it trusts with _Float128, which excludes clang, so f128 failed under clang (seen in #46). libm and libc export them regardless, and _Float128 and __float128 share one ABI on these targets. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012q87VyzNBV8gtH2ntMeKoM
c0659ce to
8a24537
Compare
cfdcd16 to
5b60d09
Compare
Claude Code review (CERIT, model
|
A new platforms workflow runs the build on Ubuntu 20.04, 22.04, 24.04 and 26.04 (each with its default GCC, CMake and GMP), on 24.04 with clang, and on Apple Silicon macOS. Per leaf type it builds MEDUSA and runs the unit suite, the Grover matrix and the circuit smoke test, and reports a table in the job summary. Weekly, on demand, and on changes to itself. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012q87VyzNBV8gtH2ntMeKoM
The first run stopped at the first obstacle everywhere: - Ubuntu containers: MoToBuddy's CMake needs flex (FLEX_TARGET in its bddcalc example); the runner image has it, a plain system does not. - macOS: Apple clang rejects -ffat-lto-objects. Both are now worked around so the probe reaches what comes after. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012q87VyzNBV8gtH2ntMeKoM
…ailures under clang On top of the portability fixes (#47): macOS builds with the default flags again, and f128 is listed as an expected failure where there is no libquadmath. Ubuntu 20.04 is dropped: its GCC 9 cannot compile MoToBuddy, so 22.04 is the oldest supported release. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012q87VyzNBV8gtH2ntMeKoM
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012q87VyzNBV8gtH2ntMeKoM
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012q87VyzNBV8gtH2ntMeKoM
MoToBuddy acc4c26 configures without them, and installing them here would hide a regression. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012q87VyzNBV8gtH2ntMeKoM
f80 builds long double, which is x87 80-bit extended only on x86: on arm64 macOS it is a plain double (so the row duplicated f64) and on aarch64 Linux it is binary128. The probe reads __LDBL_MANT_DIG__ and labels the row accordingly, with a note when it does not test 80-bit precision, instead of a bare 'pass'. From the automated review. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012q87VyzNBV8gtH2ntMeKoM
Found by the platform probe (#46): - Apple clang rejects -ffat-lto-objects, so no release build worked on macOS. The flag is now added only where the compiler accepts it. - f128 without GCC's libquadmath (clang, arm64 macOS) failed on a bare 'quadmath.h not found'; it now stops with a message naming the leaf type and how to build another. (The GMP include-order fix that was part of this commit landed on devel separately as 3755811.) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012q87VyzNBV8gtH2ntMeKoM
Apple clang accepts the flag alone and rejects it only alongside -flto, so the check passed there and the build still failed (seen in #46). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012q87VyzNBV8gtH2ntMeKoM
-lquadmath was added to every link whenever the default LEAF_FLOAT_TYPE is f128, GMP builds included. macOS has no libquadmath, so buddy_gmp failed to link there (seen in #46). GMP links now use CLIBS_GMP. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012q87VyzNBV8gtH2ntMeKoM
glibc declares roundf128, sqrtf128, powf128 and strfromf128 only for compilers it trusts with _Float128, which excludes clang, so f128 failed under clang (seen in #46). libm and libc export them regardless, and _Float128 and __float128 share one ABI on these targets. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012q87VyzNBV8gtH2ntMeKoM
8a24537 to
0aa09e3
Compare
5b60d09 to
35adbc7
Compare
Stacked on #48 and #47, which hold the build fixes this probe found (the whole stack was rebased onto current
develon 28 Oct). This adds a CI workflow that checks whether MEDUSA builds and passes beyond the single imagetests.ymlruns on.What it runs
.github/workflows/platforms.yml:tests.ymlruns on: the referenceThe Ubuntu jobs run in
ubuntu:<release>containers on an x86_64 runner.What each job checks
.github/scripts/platform-probe.shgoes through every leaf type (f32, f64, f80, f128, gmp). For each one it builds MEDUSA, then runs:--symbolic);The job summary gets a pass/FAIL table, headed by the actual compiler, CMake and GMP versions. Logs are uploaded as artifacts. A failure listed in
EXPECT_FAILdoesn't fail the job, and an expected failure that starts passing raises a warning.When it runs
Weekly, on demand (
workflow_dispatch), and on PRs that touch theMakefile,src/,tests/or the probe itself.Results (on top of #47)
All jobs pass. On top of #48, f128 no longer needs libquadmath, so it builds and passes under clang on Linux too. The only expected failure is f128 on macOS (
EXPECT_FAIL), which has no 128-bit type at all; #49 explores SoftFloat for it.The f80 row is labelled with what
long doublereally is. It's x87 80-bit extended only on x86. On Apple Silicon it's a plaindouble, so the row duplicates f64, and on ARM Linux it's binary128. Where it isn't 80-bit, the table names the real type and a note says that 80-bit precision wasn't tested, instead of a bare "pass". This came from the automated review.Without #47, the probe found these failures:
develby 3755811);-ffat-lto-objects);Still open
bddcalcexample. Upstream has fixed this (VeriFIT/MoToBuddy@acc4c26 replaces the flex/bison parser with a hand-written one). MEDUSA picked that up with the pin bump in build: bump MoToBuddy to acc4c26 (no flex/bison needed) #50 (now3f9b6b4ondevel), so the containers here no longer install flex or bison.caselabels. That's still the case atacc4c26.🤖 Generated with Claude Code
https://claude.ai/code/session_012q87VyzNBV8gtH2ntMeKoM