wjakob/nanobind

nanobind: tiny and efficient C++/Python bindings

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 19 minutes ago
Added to GitGenius on September 18th, 2026
Created on February 8th, 2022
Open Issues & Pull Requests: 33 (+0)
GitHub issues: Enabled
Number of forks: 327
Total Stargazers: 3,723 (+0)
Total Subscribers: 43 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 6.9 hours
Mean response time: 13.7 days
90th percentile: 27.0 days
Tracked items: 177

Most active contributors

Sign in to see contributor activity.

How this project is maintained

About 3% of issues opened in the past year have never received a reply. 95% of issues opened in the past year have since been closed. Three people close 81% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 12
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 437 days
Stale 30+ days: 12
Stale 90+ days: 8

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

No label distribution available yet.

Most active issues this week

Sign in to see which issues are moving.

Detailed Description

nanobind is a binding library that exposes C++ types in Python and vice versa. It uses syntax reminiscent of pybind11 and Boost.Python but achieves significantly better performance across multiple dimensions: bindings compile roughly four times faster, produce binaries around five times smaller, and incur approximately ten times lower runtime overhead compared to pybind11. The tool also outperforms Cython in binary size and compilation time while maintaining comparable runtime performance.

The library solves the problem of efficiently bridging C++ and Python code, which is essential for projects that need to call performance-critical C++ from Python or expose C++ libraries to Python users. Rather than introducing new concepts, nanobind uses a familiar API that developers already know from pybind11, lowering the barrier to adoption. Its efficiency gains come from a leaner implementation that reduces both the compilation burden and the runtime cost of crossing the language boundary.

Projects with performance-sensitive Python code that calls C++ should consider nanobind, particularly those where compilation time or binary size are concerns. The tool is especially valuable for machine learning and scientific computing projects where runtime performance of the binding layer directly impacts overall application speed. Teams currently using pybind11 can migrate with minimal syntax changes. The library also supports Python's Stable ABI starting with Python 3.12, eliminating the need to ship per-Python-version binaries for that version and later.

Development activity shows consistent engagement with real-world adoption across major projects. The maintainer actively incorporates feedback from production users and addresses performance concerns raised by the community. The project maintains thorough documentation including benchmarks and migration guides, reflecting a commitment to helping users understand the tool's advantages and transition paths.