deps: Update nanobind_bazel to v2.5.0 (#1936)No new functionality, just an update to the newest nanobind.
Co-authored-by: dominic <510002+dmah42@users.noreply.github.com>
dx: Update pre-commit repos, change imports of Python / CC rules (#1937)The changes are an autofix added in Buildifier 8.0.1, designed to future-proof
Bazel projects against the eventual removal of these rules from the native
Bazel namespace.
[clang-tidy] fix warning about decaying array to pointer (#1926)* [clang-tidy] fix warning about decaying array to pointer
* fix a different warning (old style cast)
* use string_view instead of old-style const char* strings
* ensure bazel windows is using c++17
* learn to use bazel
* and tests
* precommit fix
* more string_view creation and casting
* format
* format
* [clang-tidy] use unique_ptr for benchmark registration (#1927)
* use unique_pt...
benchmark declarations can and should be const (clang-tidy) (#1924)* benchmark declarations can and should be const (clang-tidy)
* clang-format
* add clang-tidy ignore file to remove googletest (and other third party) source for consideration
remove cxx03 test, fully unblocking c++1X development (#1903)* remove cxx03 test, fully unblocking c++1X development
* remove unnecessary macros
* pre-commit
* remove opt-in analyzer warnings from clang-tidy
* revert some changes, flush streams
* replace abort with exit(1) to call atexit and dtors
* remove more endl and put in explicit flush
Remove /proc/cpuinfo fallback path (#1921)AIX, WASM (fork of musl for libc) and a few others should now use the sysconf
path. /proc is not portable and cpuinfo is Linux specific. It does not work
anywhere else.
Try to use the _SC_NPROCESSORS_ONLN sysconf elsewhere (#1920)Try to use the sysconf method on other OS's other than just
Linux and Solaris if it exists. Also slight shuffling of the
order of sysctl and sysconf methods.
Retrieve the number of online CPUs on OpenBSD and NetBSD (#1916)* Retrieve the number of online CPUs on OpenBSD and NetBSD
* Spacing adjustment
---------
Co-authored-by: dominic <510002+dmah42@users.noreply.github.com>
change pacboy compiler target for windows builds (#1915)* change pacboy compiler target for windows builds
* use an action for cmake instead of doing things manually
* set compiler for cmake
* remove cmake action from msys2 build
* readd cmake package for msys2
* fix cmake test path to match build
* fix msvc build type setting
* fix msvc build type setting
* consistent output directory for msvc
* remove legacy environments (https://www.msys...
Update error message now that /proc/cpuinfo is no longer in use (#1917)c24774dc4f4402c3ad150363321cc972ed2669e7 removed using /proc/cpuinfo
so no longer mention it in the error message.
[BUG] Run external profiler (ProfilerManager) same number of iterations #1913 (#1914)Run the external profiler the same number of iterations as the
benchmark was run normally.
This makes, for example, a trace collected via ProfilerManager
consistent with collected PMU data.
GitHub Actions: build-and-test on an ARM processor (#1911)[Standard GitHub-hosted runners for public repositories](https://docs.github.com/en/actions/using-github-hosted-runners/using-github-hosted-runners/about-github-hosted-runners#standard-github-hosted-runners-for-public-repositories) --> `ubuntu-22.04-arm`, `ubuntu-24.04-arm`
ci: Update pre-commit hooks (#1905)As a fix, also turn the comment in libpfm's build file into a proper Starlark
docstring.
Co-authored-by: dominic <510002+dmah42@users.noreply.github.com>
Update nanobind-bazel to v2.4.0 (#1904)Contains nanobind v2.4.0, which brings some more functionality, free-threading fixes,
and performance improvements.
Get number of CPUs with sysconf() on Linux (#1901)* Get number of CPUs with sysconf() on Linux
Avoid parsing the /proc/cpuinfo just to get number of CPUs.
Instead use the portable function provided by glibc.
* Update sysinfo.cc
Fix runtime crash when parsing /proc/cpuinfo fails (#1900)The testcase fails on sparc64, because the parsing of /proc/cpuinfo
fails and thus currently returns "0" CPUs which finally leads
to division-by-zero faults in the tests.
Fix the issue by returning at least "1" CPU which allows the
tests to run. A error message will be printed in any case.
Long-term the code should be fixed to parse the cpuinfo output
on sparch which looks like this:
...
type...
cycleclock: Use cock_gettime() as fallback for any Linux architecture (#1899)The Linux kernel provides the clock_gettime() functions since a long
time already, so it's possible to use it as a generic fallback option
for any architecture if no other (better) possibility has been provided
instead.
I noticed the benchmark package failed to build on debian on the SH-4
architecture, so with this change SH-4 is now the first user of this
fallback option.
fix: remove clang-cl compilation warning (#1895)- MP flag only applies to cl, not cl frontends to other compilers (e.g. clang-cl, icx-cl etc).
Co-authored-by: dominic <510002+dmah42@users.noreply.github.com>
[bazel] Remove selects on CPU (#1892)In a future version of bazel this produces a warning. In this case using
only the platform being windows is enough. Fixes:
```
WARNING: /.../benchmark/BUILD.bazel:29:15: in config_setting rule //:windows: select() on cpu is deprecated. Use platform constraints instead: https://bazel.build/docs/configurable-attributes#platforms.
```
Remove wheel merge job, merge artifacts on download (#1886)This is supported by `actions/download-artifact@v4`, and endorsed by cibuildwheel
in their documentation (see https://cibuildwheel.pypa.io/en/stable/deliver-to-pypi/#github-actions).
Co-authored-by: dominic <510002+dmah42@users.noreply.github.com>
Fix malformed clang invocation in build_ext.run (#1884)The fix is, unsurprisingly, to not invoke clang at all, because we use
Bazel to build everything anyway.
This also means that we can drop the setuptools pin.
update standard to C++17 per C++ build support (#1875)* update standard to C++17 per C++ build support
* disable deadcode checks from clang-tidy
* fix redundant definition of constexpr
Declare a Python 3.13 toolchain, revert setup.py toolchain arget selection (#1876)The new solution was too smart (read: dense), because it did not account for
the fact that we look for the Windows libs of the interpreter building
the wheel, not the hermetic one supplying the header files.
The fix is to just align the versions again, so that the libs and headers
come from the same minor version.
Add a Python matrix to ensure the bindings build on all supported versions (#1871)Also contains a run of `pre-commit autoupdate`, and a bump of cibuildwheel
to its latest tag for CPython 3.13 support.
But, since we build for 3.10+ with SABI from 3.12 onwards, we don't even
need a dedicated Python 3.13 build job or toolchain - the wheels from 3.12
can be reused.
Simplifies some version-dependent logic around assembling the bazel
build command in setup.py, and fixes a possib...