Commit Graph
48 Commits
Author SHA1 Message Date
owen 36aad77a87 Merge v0.4.0 workload changes 2026-07-20 19:10:17 -05:00
owen c48328324c Reduce benchmark test duration to 0.4 seconds 2026-07-20 19:10:07 -05:00
owen 801fe88fbd weee 2026-07-20 18:15:02 -05:00
owenandClaude Opus 4.8 c35ec1451f Fix a few things that were throwing off benchmark scores
Two of the workloads (Native Integer Math and Memory Bandwidth) were
plain C rather than assembly, so the compiler's auto-vectorizer got to
decide how fast they ran. Newer Clang basically tripled the integer
number and blew up the STREAM triad by ~3x, which meant the same chip
landed all over the place depending on how it was built. Pinned both to
scalar codegen so GCC and Clang line up again.

Also stopped run_test from keeping only the fastest repeat -- it was
rewarding one lucky pass and hiding the normal run-to-run wobble. It
averages the repeats now.

And core detection was just wrong on a couple platforms. Windows was
handing back logical processors as physical cores (so an 8c/16t part
showed up as 16 cores), and Linux boxes where /proc/cpuinfo doesn't
carry topology (PowerPC, ARM) fell back to the thread count too -- a
176-thread POWER8 claimed 176 cores. Windows now counts real cores via
GetLogicalProcessorInformationEx, and Linux falls back to sysfs
thread-sibling groups, which also handles Apple Silicon's per-cluster
core_id numbering.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-20 14:54:20 -05:00
owen 6e21ee3574 package non-Linux releases as zip 2026-07-20 13:29:52 -05:00
owen 7a4ca7eca7 fixes 2026-07-20 13:19:11 -05:00
owen 27833003ce changes 2026-07-19 21:41:34 -05:00
owen 59b158b1c9 Move benchmark scoring to the server 2026-07-19 19:22:21 -05:00
owen 290344ae5b Add little-endian PowerPC kernels 2026-07-19 18:28:48 -05:00
owen fead8446b2 Use HTTP for result uploads 2026-07-19 17:59:35 -05:00
owen 298ad2a0f6 Always return a claim code after uploads 2026-07-19 17:22:34 -05:00
owen 5768958fbb Restore macOS background sampling declarations 2026-07-19 17:06:52 -05:00
owen d574960655 Publish temporary macOS build diagnostics 2026-07-19 17:04:39 -05:00
owen a358c8e8f5 Harden cross-platform release packaging 2026-07-19 17:02:36 -05:00
owen 4dba40e8d3 Expose macOS release build diagnostics 2026-07-19 17:00:28 -05:00
owen 2dc8244057 Fix macOS ARM64 release detection 2026-07-19 16:58:46 -05:00
owen 9a13869052 Release 0.2.1 with expanded hardware detection 2026-07-19 16:54:18 -05:00
owen e8f701a43b Forgot that static linking breaks OpenSSL and therefore uploads, back to dynamic until I can think of a fix. Will work on it later 2026-07-19 11:17:39 -05:00
owen 25bb0e3591 Limit release smoke checks to native runners 2026-07-18 23:39:04 -05:00
owen 6f45323f7d Fix Linux ARM64 release upload crash 2026-07-18 23:22:56 -05:00
owen 9271c9417b static linux builds 2026-07-18 23:02:49 -05:00
owen e585f509ac release 0.2.0 2026-07-18 22:42:08 -05:00
owen 413dd3eb84 prelim PPC64be/PPC32be ASM testing, to be refined later 2026-07-18 21:04:37 -05:00
owen d14fb980bb alright, 5hrs of refactoring and remaking it because I was tired of the AI code breaking 2026-07-18 18:04:56 -05:00
owen 5f1a2b2cea Add pre-benchmark system activity checks 2026-07-18 12:09:26 -05:00
owen cefa9021ec Support Windows result uploads via WinHTTP
Windows builds previously stubbed out --upload entirely. WinHTTP handles
TLS and certificate verification against the system trust store natively,
so unlike the POSIX path this needs no OpenSSL/embedded CA bundle - just
-lwinhttp, a system DLL that ships with Windows.
2026-07-18 07:38:24 -05:00
owen 9d9dbeccae Remove dist/ build output from version control
Release binaries are built fresh by CI (.github/workflows/release.yml)
and attached to GitHub releases; checked-in binaries here were just
stale build output, not something the release pipeline reads.
2026-07-18 07:05:34 -05:00
owen 8ae7c6ecf9 Fix TLS upload failures by embedding a CA trust bundle
SSL_CTX_set_default_verify_paths() only works if OpenSSL's compiled-in
default CA path happens to exist on the machine running the binary -
a path baked in wherever OpenSSL was built, not where the release
binary ends up. That almost never matched an end user's machine
(no such path on stock macOS; Linux distros disagree on the
location), so --upload failed with a TLS/certificate error on nearly
every machine except the one that built the release binaries.

Embed the Mozilla CA root bundle (src/ca_bundle.h) as a fallback trust
source, tried alongside the system's own default paths so locally-
trusted/corporate CAs still work where present. Windows is unaffected
since TLS is stubbed out there already.

Bump to 0.1.5-hotfix2.
2026-07-18 07:03:04 -05:00
owen 72043eb956 Add Windows support and windows-amd64/windows-i386 release binaries
The x86-64 kernels were written to the System V ABI only; on Windows's
different calling convention they silently read garbage args and ran in
near-constant time regardless of iteration count. Each public kernel now
gets a small ABI-translating thunk (WIN64_THUNK) on Windows so the kernel
bodies stay single-source. i386 also needed underscore-prefixed symbol
names to match Windows's cdecl convention. Verified end-to-end under Wine,
including determinism across repeated runs.

Also fixes CPU-core detection (sysconf isn't available under MinGW) and
adds memory/CPU-brand detection for the Windows system-info banner.
2026-07-18 06:48:40 -05:00
owen 0c31675c52 Bump version to 0.1.5 2026-07-18 06:02:30 -05:00
owen ad5791bbb7 Add authenticated uploads and rename fossmark to fossbench
Uploads can now be attributed to a fossbench.net profile: set
FOSSBENCH_TOKEN and the client sends it as a Bearer token, which the
server auto-approves and links to the account. Anonymous, pending-review
upload stays the default when no token is set. New --upload/--noupload
flags skip the interactive prompt for scripted runs, and the client
reports HTTP 401/422 distinctly from other failures. The token is never
printed or logged.

Also renames the project and its internal identifiers (FM_/fm_ macros
and symbols, source filenames, binary output names) from fossmark to
fossbench, matching the actual product name. The "fossmark_version"
field in the upload payload is left as-is, since it's the server API's
fixed contract field, not this client's own name.
2026-07-18 06:02:24 -05:00
owen 357e6f0d6d Rewrite i386 backend as hand-written assembly
Replaces the C fallback (borrowed from PowerPC) with dedicated i386
assembly for all nine kernels, matching the amd64/arm64 convention.
Fixes two real bugs found and verified on physical Pentium 4 hardware:
scalar FP silently running on x87 instead of SSE2, and fm_int_math
calling __udivdi3 on every iteration of the highest-weighted test
because the C compiler didn't know its 0xdeadbeef divisor fits in 32
bits. Real-hardware SINGLECORE/MULTICORE scores go from 425/448 to
539/581.
2026-07-18 04:35:03 -05:00
owen 136b417cf8 Add Pentium 4 Linux support 2026-07-17 19:43:26 -05:00
owen 7f33d448c7 Fix DNS uploads in Linux release builds 2026-07-17 19:32:03 -05:00
owen e2b8887dd4 Include machine model in benchmark uploads 2026-07-17 19:29:46 -05:00
owen 28b3ac266b Support legacy Intel macOS loaders 2026-07-17 18:51:31 -05:00
owen 0662bfe52d Stop publishing incompatible PPC64 binaries 2026-07-17 18:30:21 -05:00
owen 438cc58b02 Add PPC64 iMac G5 build support 2026-07-17 18:21:31 -05:00
owen 7e2360c104 remove API token requirement from uploads 2026-07-17 17:30:21 -05:00
owen aaae64e97c link libatomic in static PPC32 release 2026-07-17 17:22:49 -05:00
owen 03a51d9456 add HTTPS uploads and static release builds 2026-07-17 17:19:31 -05:00
owen 48455d1d57 release v0.1.2 2026-07-17 17:10:35 -05:00
owen ec7e7c3a27 add ppc32be, and other fixes 2026-07-17 15:16:30 -05:00
owen 31ba00f1b5 add license 2026-07-17 14:18:45 -05:00
owen 78fd561c74 add ci, almost ready 2026-07-17 14:10:37 -05:00
owen 5c3903509b fix readme, rc1 ready 2026-07-17 14:03:30 -05:00
owen 1e4e2a8ee4 fixes to make macos work correctly. v0.1a ready for release 2026-07-17 13:59:33 -05:00
owen 81f7bd84d0 initial commit for alpha release and testing on MacOS 2026-07-17 13:34:44 -05:00