---
title: Documentation
layout: default
---

== Documentation

* The latest libnanomsg C API <</v{{ site.latest }}/nanomsg.adoc#,reference manual>>

* <<gettingstarted/index.adoc#,Getting Started with nanomsg>> by Tim Dysinger

* http://dirkjan.ochtman.nl/talks/2013/09/nanomsg-sss/#/step-1[Simple Smart Sockets] presentation by Dirkjan Ochtman

* Some <<rfcs/index.adoc#,RFCs>> describing the network protocols.

* <<documentation-zeromq.adoc#,Differences between nanomsg and ZeroMQ>>, by Martin Sustrik (inventor of both nanomsg and ZeroMQ)

* The https://nanomsg.github.io/nng/man/index.html[NNG Reference Manual], documenting the new NNG API, is available from https://leanpub.com/nngmanual[Leanpub].

* https://staysail.github.io/nng_presentation/nng_presentation.html[Scalability Protocols] presentation by Garrett D'Amore (Feb 2018)

== Language bindings

[[bindings]]
[cols="20%,30%,50%"]
|===

.2+<|C
|https://github.com/nanomsg/nanomsg[nanomsg]
|Reference implementation, sustaining mode

|https://github.com/nanomsg/nng[NNG]
|Modern re-implementation. 

.3+<|C++
|https://github.com/achille-roussel/nanomsgxx[nanomsgxx]
|

|https://github.com/nanomsg/cppnanomsg[cppnanomsg]
|

|https://github.com/cwzx/nngpp[nngpp]
|(NNG binding)

|Clojure
|https://github.com/niwibe/jnanomsg[jnanomsg]
|

|D
|https://github.com/kaleidicassociates/nanomsg-wrapper[nanomsg-wrapper]
|(note new location)

|Dylan
|https://github.com/dylan-foundry/nanomsg-dylan[nanomsg-dylan]
|

|Erlang
|https://github.com/basho/enm[enm]
|

|Fortran
|https://github.com/jshahbazi/nanofort[nanofort]
|

.3+<|Go
|https://github.com/nanomsg/mangos-v2[mangos v2]
|(pure Go implementation, version 2, recommended)

|https://github.com/nanomsg/mangos[mangos]
|(pure Go implementation)

|https://github.com/op/go-nanomsg[go-nanomsg]
|

.2+<|Haskell
| http://hackage.haskell.org/package/nanomsg-haskell[nanomsg-haskell]
|

|http://hackage.haskell.org/package/nanomsg[nanomsg]
|

|Haxe
|https://github.com/michelkaeser/hx-nanomsg[hx-nanomsg]
|


.2+<|iOS
|https://github.com/reqshark/nanomsg.ios[nanomsg.ios]
|

|https://github.com/swiftc-org/nanomsg[swiftc nanomsg]
|

.3+<|Java
|https://github.com/gonzus/jnano[jnano]
|

|https://github.com/niwibe/jnanomsg[jnanomsg]
|

|https://github.com/babeloff/nngjvm[nngjvm]
|(NNG binding for JNA.)

|JavaScript (Node.js)
|https://github.com/nickdesaulniers/node-nanomsg[node-nanomsg]
|

.3+<|Lua
|https://github.com/Neopallium/lua-nanomsg[lua-nanomsg]
|

|https://github.com/nanomsg/luajit-nanomsg[luajit-nanomsg]
|

|https://github.com/mbalmer/luananomsg[luananomsg]
|

|.NET
|https://github.com/mhowlett/NNanomsg[NNanomsg]
|

|Ocaml
|https://github.com/rgrinberg/onanomsg[onanomsg]
|

|Perl
|https://metacpan.org/module/NanoMsg::Raw[NanoMsg::Raw]
|

|PHP
|https://github.com/mkoppanen/php-nano[php-nano]
|

|PicoLisp
|https://github.com/aw/picolisp-nanomsg[picolisp-nanomsg] FFI bindings
|

.3+<|Python
|https://github.com/tonysimpson/nanomsg-python[nanomsg-python]
|

|https://github.com/djc/nnpy[nnpy]
|

|https://github.com/codypiersall/pynng[pynng]
|NNG binding. https://pynng.readthedocs.io[Docs here].

|R
|https://github.com/mhowlett/rnanomsg[rnanomsg]
|

.2+<|Ruby
|https://github.com/chuckremes/nn-core[nn-core]
|FFI bindings: `ruby -S gem install nn-core`

|https://bitbucket.org/kschiess/nanomsg[nanomsg]
|Native bindings: `gem install nanomsg`

.2+<|Rust
|https://github.com/glycerine/rust-nanomsg[rust-nanomsg]
|

|https://crates.io/crates/nng[nng-rs]
|Safe wrapper for NNG

|Scheme (CHICKEN)
|https://github.com/Adellica/chicken-nanomsg[chicken-nanomsg]
|

|Smalltalk
|https://github.com/mumez/NanoStrand[NanoStrand]
|

|===

Finally, if you decide to implement your own language binding check this
<<development-bindings.adoc#,document>>.
