Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

If not doing anything edge-casey, nanobind[0] is extremely pleasant to use. It’s a rewrite of pybind11 specifically designed for the 80/20 use-cases and solves the long compile times. I have used it extensively over the last year in atopile[1] if someone is looking for a real-world production code example. We are using nanobind paired with hatch & scikit-build.

I suggest having a look at the pyproject and src/faebryk/core/cpp.

[0] https://github.com/wjakob/nanobind [1] https://github.com/atopile/atopile



I love nanobind, use it all the time and highly recommend it. It makes it very easy to pass numpy, PyTorch, cupy or tensorflow arrays to your C++ extension, to specify what array shape and flags are expected, and to wrap either C++ or Cuda code. When paired with scikit-build, it makes building Python packages with C++ extensions a breeze. I would give it more than one star on github if I could.


> solves the long compile times

this only goes so far - if you try to eg bind O(10k) methods using nanobind (or pybind ofc) you will be compiling for a very long time. for example, i have a threadripper and with a single large TU (translation unit) it took about 60 minutes (because single TU <-> single thread). i had to "shard" my nanobind source to get down to a "reasonable" ~10 minutes.


>O(10k)

If k means 1000 than O(10000) is the same as O(1). Perhaps you meant "approximately 10k"?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: