Skip to content

Minor CI fixes#12

Merged
matajoh merged 1 commit intomicrosoft:mainfrom
matajoh:v0.5.1
May 5, 2026
Merged

Minor CI fixes#12
matajoh merged 1 commit intomicrosoft:mainfrom
matajoh:v0.5.1

Conversation

@matajoh
Copy link
Copy Markdown
Member

@matajoh matajoh commented May 4, 2026

  • Examples directory not being correctly included in the wheel
  • volatile warnings on Windows
  • cibuildwheel issues on Windows / x86

@matajoh matajoh force-pushed the v0.5.1 branch 2 times, most recently from 63c779f to 62c9f4f Compare May 4, 2026 21:19
Packaging
- Ship examples/*.txt in the wheel (move out of examples/assets/,
  fix the package_data glob, update sketches.py loader paths).

Windows / x86
- Add a windows-x86 (CPython 3.12) job to pr_gate.yml.
- Fix MSVC volatile warnings in compat.h.
- Provide working 64-bit atomics on 32-bit x86: emulate
  load/store/exchange/fetch_add via _InterlockedCompareExchange64
  CAS loops where the Interlocked*64 intrinsics are unavailable.
- sched.c: cast atomic args through (void *) to silence MSVC
  cast-qual warnings.

Physical-CPU-aware worker sizing
- New boc_physical_cpu_count() with Linux (sysfs +
  sched_getaffinity), macOS (sysctl hw.physicalcpu_max) and Windows
  (GetLogicalProcessorInformationEx) backends; exposed as
  bocpy._core.physical_cpu_count().
- WORKER_COUNT now defaults to physical_cpu_count() - 1, with a
  BOCPY_WORKERS env override and graceful fallback to
  sched_getaffinity / multiprocessing. Avoids HT/SMT
  oversubscription that hurts CPU-bound throughput.

Benchmark
- Use physical core count for default sweep values, the
  oversubscription warning and run metadata.
- derive_sizes() biases toward more independent rings rather than
  more chains-per-ring so the chain-ring workload stops starving at
  higher worker counts.

README
- New "Scaling with cores" section with a Mermaid speedup chart
  (~7.5x at 8 workers on the chain-ring benchmark) and the exact
  reproduction command.

Boids example
- Add --scale for the rendered triangle size, show FPS alongside
  behavior/s, and print an average behavior/s summary on a
  successful recorded run.

Misc
- Drop the always-skipped TestStealSpuriousFailureStress placeholder
  in test_scheduler_steal.py.

Signed-off-by: Matthew A Johnson <matjoh@microsoft.com>
@matajoh matajoh merged commit d9116c2 into microsoft:main May 5, 2026
27 checks passed
@matajoh matajoh deleted the v0.5.1 branch May 5, 2026 10:20
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