| Welcome to nanomsg |
| ================== |
| |
| [](https://github.com/nanomsg/nanomsg/releases/latest) |
| [](https://github.com/nanomsg/nanomsg/blob/master/COPYING) |
| [](https://circleci.com/gh/nanomsg/nanomsg) |
| [](https://ci.appveyor.com/project/nanomsg/nanomsg) |
| [](https://codecov.io/gh/nanomsg/nanomsg) |
| [](https://gitter.im/nanomsg/nanomsg) |
| |
| The nanomsg library is a simple high-performance implementation of several |
| "scalability protocols". These scalability protocols are light-weight messaging |
| protocols which can be used to solve a number of very common messaging |
| patterns, such as request/reply, publish/subscribe, surveyor/respondent, |
| and so forth. These protocols can run over a variety of transports such |
| as TCP, UNIX sockets, and even WebSocket. |
| |
| For more information check the [website](http://nanomsg.org). |
| |
| Prerequisites |
| ------------- |
| |
| 1. Windows. |
| * Windows Vista or newer (Windows XP and 2003 are *NOT* supported) |
| * Microsoft Visual Studio 2010 (including C++) or newer, or mingw-w64. |
| (Specifically mingw and older Microsoft compilers are *NOT supported, |
| and we do not test mingw-w64 at all, so YMMV.) |
| * CMake 2.8.7 or newer, available in $PATH as `cmake` |
| |
| 2. POSIX (Linux, MacOS X, UNIX) |
| * ANSI C compiler supporting C89 |
| * POSIX pthreads (should be present on all modern POSIX systems) |
| * BSD sockets support for both TCP and UNIX domain sockets |
| * CMake (http://cmake.org) 2.8.7 or newer, available in $PATH as `cmake` |
| |
| 3. Documentation (optional) |
| * asciidoctor (http://asciidoctor.org/) available as `asciidoctor` |
| * If not present, docs are not formatted, but left in readable ASCII |
| * Also available on-line at http://nanomsg.org/documentation |
| |
| Quick Build Instructions |
| ------------------------ |
| |
| These steps here are the minimum steps to get a default Debug |
| build. Using CMake you can do many other things, including |
| setting additional variables, setting up for static builds, or |
| generation project or solution files for different development |
| environments. Please check the CMake website for all the various |
| options that CMake supports. |
| |
| ## POSIX |
| |
| This assumes you have a shell in the project directory, and have |
| the cmake and suitable compilers (and any required supporting tools |
| like linkers or archivers) on your path. |
| |
| 1. `% mkdir build` |
| 2. `% cd build` |
| 3. `% cmake ..` |
| 4. `% cmake --build .` |
| 5. `% ctest .` |
| 6. `% sudo cmake --build . --target install` |
| 7. `% sudo ldconfig` (if on Linux) |
| |
| ## Windows |
| |
| This assumes you are in a command or powershell window and have |
| the appropriate variables setup to support Visual Studio, typically |
| by running `vcvarsall.bat` or similar with the appropriate argument(s). |
| It also assumes you are in the project directory. |
| |
| 1. `md build` |
| 2. `cd build` |
| 3. `cmake ..` |
| 4. `cmake --build . --config Debug` |
| 5. `ctest -C Debug .` |
| 6. `cmake --build . --config Debug --target install` |
| *NB:* This may have to be done using an Administrator account. |
| |
| Alternatively, you can build and install nanomsg using [vcpkg](https://github.com/microsoft/vcpkg/) dependency manager: |
| |
| 1. `git clone https://github.com/Microsoft/vcpkg.git` |
| 2. `cd vcpkg` |
| 3. `./bootstrap-vcpkg.bat` |
| 4. `./vcpkg integrate install` |
| 5. `./vcpkg install nanomsg` |
| |
| The nanomsg port in vcpkg is kept up to date by microsoft team members and community contributors. |
| If the version is out of date, please [create an issue or pull request](https://github.com/Microsoft/vcpkg) on the vcpkg repository. |
| |
| Static Library |
| -------------- |
| |
| We normally build a dynamic library (.so or .DLL) by default. |
| |
| If you want a static library (.a or .LIB), configure by passing |
| `-DNN_STATIC_LIB=ON` to the first `cmake` command. |
| |
| ### POSIX |
| |
| POSIX systems will need to link with the libraries normally used when building |
| network applications. For some systems this might mean -lnsl or -lsocket. |
| |
| ### Windows |
| |
| You will also need to define `NN_STATIC_LIB` in your compilation environment |
| when building programs that use this library. This is required because of |
| the way Windows changes symbol names depending on whether the symbols should |
| be exported in a DLL or not. |
| |
| When using the .LIB on Windows, you will also need to link with the |
| ws2_32, mswsock, and advapi32 libraries, as nanomsg depends on them. |
| |
| Support |
| ------- |
| |
| This library is considered to be in "sustaining" mode, which means that new |
| feature development has ended, and bug fixes are made only when strictly |
| necessary for severe issues. |
| |
| New development is now occurring in the [NNG](https://github.com/nanomsg/nng) |
| project, which offers both protocol and API compatibility with this project. |
| Please consider using NNG for new projects. |
| |
| Please see the file SUPPORT for more details. |
| |
| Resources |
| --------- |
| |
| Website: [http://nanomsg.org](http://nanomsg.org) |
| |
| Source code: [https://github.com/nanomsg/nanomsg](http://github.com/nanomsg/nanomsg) |
| |
| Documentation: [http://nanomsg.org/documentation.html](http://nanomsg.org/documentation.html) |
| |
| Bug tracker: [https://github.com/nanomsg/nanomsg/issues](http://github.com/nanomsg/nanomsg/issues) |
| |
| Mailing list: [nanomsg@freelists.org](http://www.freelists.org/list/nanomsg) |
| |
| Gitter Chat: [https://gitter.im/nanomsg/nanomsg](https://gitter.im/nanomsg/nanomsg) |
| |
| IRC chatroom: [#nanomsg at irc.freenode.net/8001](http://webchat.freenode.net?channels=%23nanomsg) |