BSD 3-Clause "New" or "Revised" License

项目介绍

wjakob/nanobind 是一个托管在 GitHub 上的开源项目,主要使用 C++ 编写,采用 BSD 3-Clause "New" or "Revised" License 许可证,目前获得 3.8k 个 Star、336 次 Fork。

仓库全名
wjakob/nanobind
开源许可证
BSD 3-Clause "New" or "Revised" License
Star 数
3.8k
Fork 数
336
未关闭 Issue
38

README 摘要

nanobind: tiny and efficient C++/Python bindings nanobind is a small binding library that exposes C++ types in Python and vice versa. It is reminiscent of Boost.Python and pybind11 and uses near-identical syntax. In contrast to these existing tools, nanobind is more efficient: bindings compile in a shorter amount of time, produce smaller binaries, and have better runtime performance. More concretely, benchmarks show…

完整内容见 GitHub 原始 README 或本页 。

常见问题

nanobind 用什么语言开发?

主要使用 C++ 编写,采用 BSD 3-Clause "New" or "Revised" License 许可证,目前有 3.8k 个 Star。

nanobind 可以免费商用吗?

仓库采用 BSD 3-Clause "New" or "Revised" License 许可证,可免费使用与修改,商业使用请遵守许可证条款(例如保留版权声明与许可声明)。

如何获取 nanobind 的源码?

可以直接克隆仓库:git clone https://github.com/wjakob/nanobind.git;安装与运行步骤见仓库 README。

nanobind 最近还在维护吗?

仓库最近一次更新为 5 天前,当前有 38 个未关闭 Issue;Star 数为 3.8k,可作为社区活跃度的参考。

关于

GitHub 原始描述(英文)

nanobind: tiny and efficient C++/Python bindings

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

简要分析

热度分
4498
价值分
2372
活跃状态
活跃

语言占比

C
C++
CMake
Python

README

nanobind: tiny and efficient C++/Python bindings

Documentation Continuous Integration

nanobind logo

nanobind is a small binding library that exposes C++ types in Python and vice versa. It is reminiscent of Boost.Python and pybind11 and uses near-identical syntax. In contrast to these existing tools, nanobind is more efficient: bindings compile in a shorter amount of time, produce smaller binaries, and have better runtime performance.

More concretely, benchmarks show up to ~4× faster compile time, ~5× smaller binaries, and ~10× lower runtime overheads compared to pybind11. nanobind also outperforms Cython in important metrics (3-12× binary size reduction, 1.6-4× compilation time reduction, similar runtime performance).

Testimonials

A selection of testimonials from projects that migrated from pybind11 to nanobind.

IREE · LLVM Discourse

“IREE and its derivatives switched 1.5 years ago. It has been one of the single best dep decisions I’ve made. Not only is it much-much faster to compile, it produces smaller binaries and has a much more lean interface to the underlying Python machinery that all adds up to significant performance improvements. Worked exactly like it said on the tin.”

— Stella Laurenzo, Google

XLA/MLIR · GitHub PR

“For a complicated Google-internal LLM model in JAX, this change improves the MLIR lowering time by around 5s (out of around 30s), which is a significant speedup for simply switching binding frameworks.”

— Peter Hawkins, Google

Apple MLX · X

“MLX uses nanobind to bind C++ to Python. It’s a critical piece of MLX infra and is why running Python code is nearly the same speed as running C++ directly. Also makes it super easy to move arrays between frameworks.”

— Awni Hannun, Apple

JAX · GitHub

“nanobind has a number of advantages, notably speed of compilation and dispatch, but the main reason to do this for these bindings is because nanobind can target the Python Stable ABI starting with Python 3.12. This means that we will not need to ship per-Python version CUDA plugins starting with Python 3.12.”

— Peter Hawkins, Google

FEniCS / DOLFINx · GitHub

“nanobind is smaller than pybind11, the wrappers build faster and it has significantly improved support for wrapping multi-dimensional arrays, which we use heavily. The nanobind docs are easier to follow on the low-level details, which makes understanding the memory management in the wrapper layer easier.”

— Garth N. Wells

PennyLane · Release notes

“Nanobind has been developed as a natural successor to the pybind11 library and offers a number of advantages like its ability to target Python’s Stable ABI.”

Documentation

Please see the following links for tutorial and reference documentation in HTML and PDF formats.

License and attribution

All material in this repository is licensed under a three-clause BSD license.

Please use the following BibTeX template to cite nanobind in scientific discourse:

@misc{nanobind,
   author = {Wenzel Jakob},
   year = {2022},
   note = {https://github.com/wjakob/nanobind},
   title = {nanobind: tiny and efficient C++/Python bindings}
}

The nanobind logo was designed by AndoTwin Studio (high-resolution download: light, dark).

评论

暂无评论