From 23dadfa4a7812c9ee16812e3b6eff05c57a30745 Mon Sep 17 00:00:00 2001 From: Nicholas Junge Date: Tue, 7 Mar 2023 12:22:00 +0100 Subject: [PATCH] Bump nanobind to stable v0.2.0, change linker options (#1565) Bumps nanobind to v0.2.0, the latest stable version to include all features needed to create the GBM bindings. Deprecated names in v0.2.0 were migrated to their new counterparts. Linkopts for macOS were changed to mirror the "endorsed" linker options used in nanobind's CMake config, which were changed since the last commit. --- bazel/benchmark_deps.bzl | 3 ++- bindings/python/google_benchmark/benchmark.cc | 26 +++++++++---------- bindings/python/nanobind.BUILD | 8 ++++-- 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/bazel/benchmark_deps.bzl b/bazel/benchmark_deps.bzl index 8c786fbc..bc1fc9f1 100644 --- a/bazel/benchmark_deps.bzl +++ b/bazel/benchmark_deps.bzl @@ -48,7 +48,8 @@ def benchmark_deps(): git_repository( name = "nanobind", remote = "https://github.com/wjakob/nanobind.git", - commit = "fe3ecb800a7a3e8023e8ee77167a6241591e0b8b", + commit = "1ffbfe836c9dac599496a170274ee0075094a607", # v0.2.0 + shallow_since = "1677873085 +0100", build_file = "@//bindings/python:nanobind.BUILD", recursive_init_submodules = True, ) diff --git a/bindings/python/google_benchmark/benchmark.cc b/bindings/python/google_benchmark/benchmark.cc index 991da5a5..cf2da2e8 100644 --- a/bindings/python/google_benchmark/benchmark.cc +++ b/bindings/python/google_benchmark/benchmark.cc @@ -142,9 +142,9 @@ NB_MODULE(_benchmark, m) { nb::arg("value") = 0., nb::arg("flags") = Counter::kDefaults, nb::arg("k") = Counter::kIs1000) .def("__init__", ([](Counter *c, double value) { new (c) Counter(value); })) - .def_readwrite("value", &Counter::value) - .def_readwrite("flags", &Counter::flags) - .def_readwrite("oneK", &Counter::oneK) + .def_rw("value", &Counter::value) + .def_rw("flags", &Counter::flags) + .def_rw("oneK", &Counter::oneK) .def(nb::init_implicit()); nb::implicitly_convertible(); @@ -154,25 +154,25 @@ NB_MODULE(_benchmark, m) { using benchmark::State; nb::class_(m, "State") .def("__bool__", &State::KeepRunning) - .def_property_readonly("keep_running", &State::KeepRunning) + .def_prop_ro("keep_running", &State::KeepRunning) .def("pause_timing", &State::PauseTiming) .def("resume_timing", &State::ResumeTiming) .def("skip_with_error", &State::SkipWithError) - .def_property_readonly("error_occurred", &State::error_occurred) + .def_prop_ro("error_occurred", &State::error_occurred) .def("set_iteration_time", &State::SetIterationTime) - .def_property("bytes_processed", &State::bytes_processed, + .def_prop_rw("bytes_processed", &State::bytes_processed, &State::SetBytesProcessed) - .def_property("complexity_n", &State::complexity_length_n, + .def_prop_rw("complexity_n", &State::complexity_length_n, &State::SetComplexityN) - .def_property("items_processed", &State::items_processed, + .def_prop_rw("items_processed", &State::items_processed, &State::SetItemsProcessed) .def("set_label", (void (State::*)(const char*)) & State::SetLabel) .def("range", &State::range, nb::arg("pos") = 0) - .def_property_readonly("iterations", &State::iterations) - .def_property_readonly("name", &State::name) - .def_readwrite("counters", &State::counters) - .def_property_readonly("thread_index", &State::thread_index) - .def_property_readonly("threads", &State::threads); + .def_prop_ro("iterations", &State::iterations) + .def_prop_ro("name", &State::name) + .def_rw("counters", &State::counters) + .def_prop_ro("thread_index", &State::thread_index) + .def_prop_ro("threads", &State::threads); m.def("Initialize", Initialize); m.def("RegisterBenchmark", RegisterBenchmark, diff --git a/bindings/python/nanobind.BUILD b/bindings/python/nanobind.BUILD index 9a8d6a04..35536bba 100644 --- a/bindings/python/nanobind.BUILD +++ b/bindings/python/nanobind.BUILD @@ -30,8 +30,8 @@ cc_library( "src/nb_func.cpp", "src/nb_internals.cpp", "src/nb_internals.h", + "src/nb_ndarray.cpp", "src/nb_type.cpp", - "src/tensor.cpp", "src/trampoline.cpp", ], copts = select({ @@ -43,7 +43,11 @@ cc_library( ], }), linkopts = select({ - "@com_github_google_benchmark//:macos": ["-undefined suppress", "-flat_namespace"], + "@com_github_google_benchmark//:macos": [ + "-undefined dynamic_lookup", + "-Wl,-no_fixup_chains", + "-Wl,-dead_strip", + ], "//conditions:default": [], }), includes = ["include", "ext/robin_map/include"],