ifdef::env-github[]
:tip-caption: :bulb:
:note-caption: :information_source:
:important-caption: :heavy_exclamation_mark:
:caution-caption: :fire:
:warning-caption: :warning:
endif::[]
= nng - nanomsg-next-gen

image:https://img.shields.io/badge/license-MIT-blue.svg[MIT License]
image:https://img.shields.io/circleci/project/github/nanomsg/nng.svg?label=[Linux Status,link="https://circleci.com/gh/nanomsg/nng"]
image:https://img.shields.io/appveyor/ci/nanomsg/nng/master.svg?label=windows[Windows Status,link="https://ci.appveyor.com/project/nanomsg/nng"]
image:https://codecov.io/gh/nanomsg/nng/branch/master/graph/badge.svg?label=coverage[Coverage,link="https://codecov.io/gh/nanomsg/nng"]
image:https://api.codacy.com/project/badge/Grade/f241cba192974787b66f7e4368777ebf["Codacy code quality", link="https://www.codacy.com/app/gdamore/nng?utm_source=github.com&utm_medium=referral&utm_content=nanomsg/nng&utm_campaign=Badge_Grade"]

This repository represents a rewrite of the SP protocol
library known as https://github.com/nanomsg/nanomsg[libnanomsg].

This is pre-release, but at this point we believe that the library is
robust enough to use for development and testing, and we are actively
seeing additional testing and review.

While we have made every reasonable effort to ensure that this library
is robust and safe, it is still a *pre-release*, and details are subject
to change.  Caution is advised before depending upon it.

NOTE: We're getting pretty close to removing this caveat though,
and we'd like help from others in testing to further improve our confidence
before we do.

When the library is ready for broader consumption, an
announcement will be posted on the nanomsg mailing list and website.

If you are looking for the current production version of nanomsg, please
see the https://github.com/nanomsg/nanomsg[nanomsg repo].

If you want to build and test yourself, you need CMake version 3.1, and
you can use standard CMake build recipes.  (We highly recommend using
https://ninja-build.org[Ninja] as it is much faster than traditional
build systems.) On a Linux/UNIX system, if you have Ninja already
installed, you can for example do:

[source,sh]
----
  $ mkdir build
  $ cmake -G Ninja ..
  $ ninja
  $ ninja test
----

This library can be compiled with support for TLS, which enables
the use of the "tls+tcp://" and "wss://" schemes.  In order to this,
configure with `-DNNG_ENABLE_TLS=ON`.

NOTE: The `NNG_ENABLE_TLS` library depends on the ARM
https://tls.mbed.org[mbedTLS] library.  This library is available
in packaged form for many systems, and can be built for just about
any of the others.  However, please be aware of the licensing
implications, because the mbedTLS library carries other licensing
requirements (either Apache or GPL) than _nng_.
either Apache or GPL licenses.

Much of the library, but not all, is documented in the docs/ folder,
and also https://nanomsg.github.io/nng[online].

You can also buy a copy of the 
https://leanpub.com/nngmanual/[NNG Reference Manual at Leanpub].
(Purchases from Leanpub help fund our work, and get get a nicer
formatted single PDF or ebook edition.)

You can also explore the `nng.h` header file, which provides the public
API. A legacy compatible `nng_compat.h` header is available and
offers API compatibility with legacy _nanomsg_.

== Commercial Support

Commercial support for _NNG_ is available.

Please contact mailto:info@staysail.tech[Staysail Systems, Inc.] to
inquire further.
