From b9cb718076bf1c408076153e33b5cd7ecc741d26 Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Fri, 1 Jun 2018 19:20:26 -0700 Subject: fixes #514 Need documentation updates for 1.0 --- README.html | 715 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 715 insertions(+) create mode 100644 README.html (limited to 'README.html') diff --git a/README.html b/README.html new file mode 100644 index 00000000..f2d99b5c --- /dev/null +++ b/README.html @@ -0,0 +1,715 @@ + + + + + + + +nng - nanomsg-next-gen + + + + + +
+
+
+
+

MIT License +Linux Status +Windows Status +Coverage +Codacy code quality

+
+
+ + + + + +
+
Note
+
+If you are looking for the legacy version of nanomsg, please +see the nanomsg repository. +
+
+
+

This project is a rewrite of the Scalability Protocols +library known as libnanomsg, +and adds significant new capabilities, while retaining +compatibility with the original.

+
+
+

It may help to think of this as "nanomsg-next-generation".

+
+
+
+
+

NNG: Lightweight Messaging Library

+
+
+

NNG, like its predecessors nanomsg (and to some extent +ZeroMQ), is a lightweight, brokerless library, +offering a simple API to solve common recurring messaging problems, +such as publish/subscribe, RPC-style request/reply, or service discovery. +The API frees the programmer from worrying about details like connection +management, retries, and other comomon considerations, so that they +can focus on the application instead of the plumbing.

+
+
+

NNG is implemented in C, requiring only C99 and CMake to build. +It can be built as a shared or a static library, and is readily +embeddable. It is also designed to be easy to port to new platforms +if your platform is not already supported.

+
+
+
+
+

License

+
+
+

NNG is licensed under a liberal, and commercial friendly, MIT license. +The goal to the license is to minimize friction in adoption, use, and +contribution.

+
+
+
+
+

Enhancements (Relative to nanomsg)

+
+
+

Here are areas where this project improves on "nanomsg":

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Reliability + +

NNG is designed for production use from the beginning. Every +error case is considered, and it is designed to avoid crashing except in cases +of gross developer error. (Hopefully we don’t have any of these in our own +code.)

+
+Scalability + +

NNG scales out to engage multiple cores using a bespoke +asynchronous I/O framework, using thread pools to spread load without +exceeding typical system limits.

+
+Maintainability + +

NNG’s architecture is designed to be modular and +easily grasped by developers unfamiliar with the code base. The code +is also well documented.

+
+Extensibility + +

Because it avoids ties to file descriptors, and avoids +confusing interlocking state machines, it is easier to add new protocols +and transports to NNG. This was demonstrated by the addition of the +TLS and ZeroTier transports.

+
+Security + +

NNG provides TLS 1.2 and ZeroTier transports, offering +support for robust and industry standard authentication and encryption. +In addition, it is hardened to be resilient against malicious attackers, +with special consideration given to use in a hostile Internet.

+
+Usability + +

NNG eschews slavish adherence parts of the more complex and +less well understood POSIX APIs, while adopting the semantics that are +familiar and useful. New APIs are intuitive, and the optional support +for separating protocol context and state from sockets makes creating +concurrent applications vastly simpler than previously possible.

+
+
+
+
+
+

Compatibility

+
+
+

This project offers both wire compatibility and API compability, +so most nanomsg users can begin using NNG right away.

+
+
+

Existing nanomsg and github.com/go-mangos/mangos[mangos] applications +can interoperate with NNG applications automatically.

+
+
+

That said, there are some areas where legacy nanomsg still offers +capabilities NNG lacks — specifically enhanced observability with +statistics, and tunable prioritization of different destinations +are missing, but will be added in a future release.

+
+
+

Additionally, some API capabilities that are useful for foreign +language bindings are not implemented yet.

+
+
+

Some simple single threaded, synchronous applications may perform better under +legacy nanomsg than under NNG. (We believe that these applications are the +least commonly deployed, and least interesting from a performance perspective. +NNG’s internal design is slightly less efficient in such scenarios, but it +greatly benefits when concurrency or when multiple sockets or network peers +are involved.)

+
+
+
+
+

Supported Platforms

+
+
+

NNG supports Linux, macOS, Windows (Vista or better), illumos, Solaris, +FreeBSD, Android, and iOS. Most other POSIX platforms should work out of +the box but have not been tested. Very old versions of otherwise supported +platforms might not work.

+
+
+
+
+

Requirements

+
+
+

To build this project, you will need a C99 compatible compiler and +CMake version 3.1 or newer.

+
+
+

We recommend using the Ninja build +system (pass "-G Ninja" to CMake) when you can. +(And not just because Ninja sounds like "NNG" — it’s also +blindingly fast and has made our lives as developers measurably better.)

+
+
+

If you want to build with TLS support you will also need +mbedTLS. Seee docs/BUILD_TLS.html for details.

+
+
+
+
+

Quick Start

+
+
+

With a Linux or UNIX environment:

+
+
+
+
  $ mkdir build
+  $ cmake -G Ninja ..
+  $ ninja
+  $ ninja test
+
+
+
+
+
+

API Documentation

+
+
+

The API documentation is provided in Asciidoc format in the +docs/man subdirectory, and also +online. +The libnng(3) page is a good starting point.

+
+
+

You can also purchase a copy of the +NNG Reference Manual. +(It is published in both electronic and printed formats.) +Purchases of the book help fund continued development of NNG.

+
+
+
+
+

Example Programs

+
+
+

Some demonstration programs have been created to help serve as examples. +These are located in the demo directory.

+
+
+
+
+

Legacy Compatibility

+
+
+

A legacy libnanomsg compatible API is available, and while it offers +less capability than the modern NNG API, it may serve as a transition aid. +Please see nng_compat(3) for details.

+
+
+
+
+

Commercial Support

+
+
+

Commercial support for NNG is available.

+
+
+

Please contact Staysail Systems, Inc. to +inquire further.

+
+
+
+
+

Commercial Sponsors

+
+
+

The development of NNG has been made possible through the generous +sponsorship of Capitar IT Group BV and +Staysail Systems, Inc..

+
+
+
+
+ + + \ No newline at end of file -- cgit v1.2.3-70-g09d2