Modern C
NNG
For new C applications. Its modern API, asynchronous foundation, and active development make it the default choice for C.
Start with NNGGetting started
The protocols are shared; the installation, lifecycle, and idioms are not. Start with the implementation you will use, then build a small PAIR application you can run locally.
These guides are maintained here so the first example tracks each implementation’s current API.
Modern C
For new C applications. Its modern API, asynchronous foundation, and active development make it the default choice for C.
Start with NNGPure Go
A native Go implementation of the protocols. Use mangos v3 when you want Go’s idioms without a C dependency.
Start with mangosLegacy C API
The original C implementation and API. Choose it for existing applications and bindings that depend on libnanomsg.
Start with libnanomsgPreferred Rust binding
A safe, idiomatic Rust wrapper for NNG. It is independently maintained, with its own release lifecycle.
Start with nng-rsPreferred Python binding
Python bindings for NNG with synchronous, asyncio, and Trio-friendly APIs. It is independently maintained.
Start with pynngCommunity bindings
Browse community-maintained bindings and wrappers for C++, Java, JavaScript, Lua, Ruby, and more.
Browse language bindingsThe featured implementations use the Scalability Protocols. Once your two peers can exchange a message, choose the pattern that matches the shape of your system.