{"id":13424575,"url":"https://github.com/nanomsg/nng","last_synced_at":"2026-01-31T08:03:51.600Z","repository":{"id":14398387,"uuid":"76157774","full_name":"nanomsg/nng","owner":"nanomsg","description":"nanomsg-next-generation -- light-weight brokerless messaging","archived":false,"fork":false,"pushed_at":"2026-01-30T09:25:05.000Z","size":25577,"stargazers_count":4489,"open_issues_count":79,"forks_count":543,"subscribers_count":126,"default_branch":"main","last_synced_at":"2026-01-30T22:44:26.788Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://nng.nanomsg.org","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nanomsg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/CONTRIBUTING.adoc","funding":".github/FUNDING.yml","license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"gdamore","patreon":"gedamore","custom":["https://leanpub.com/nngref2e"]}},"created_at":"2016-12-11T06:14:28.000Z","updated_at":"2026-01-30T17:16:18.000Z","dependencies_parsed_at":"2023-11-26T01:30:02.853Z","dependency_job_id":"8ea9f57e-f38b-4796-8488-2972279c8e74","html_url":"https://github.com/nanomsg/nng","commit_stats":{"total_commits":1756,"total_committers":87,"mean_commits":"20.183908045977013","dds":0.09510250569476086,"last_synced_commit":"603282f28e6f2e1b32d3a587d8de761f9f94ad45"},"previous_names":[],"tags_count":50,"template":false,"template_full_name":null,"purl":"pkg:github/nanomsg/nng","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nanomsg%2Fnng","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nanomsg%2Fnng/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nanomsg%2Fnng/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nanomsg%2Fnng/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nanomsg","download_url":"https://codeload.github.com/nanomsg/nng/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nanomsg%2Fnng/sbom","scorecard":{"id":674060,"data":{"date":"2025-08-11","repo":{"name":"github.com/nanomsg/nng","commit":"cdcf4934610a2673727b4efad93b82191c3379eb"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.7,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":10,"reason":"24 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":2,"reason":"Found 4/15 approved changesets -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql-analysis.yml:30","Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql-analysis.yml:31","Warn: no topLevel permission defined: .github/workflows/codeql-analysis.yml:1","Warn: no topLevel permission defined: .github/workflows/coverage.yml:1","Warn: no topLevel permission defined: .github/workflows/darwin.yml:1","Warn: no topLevel permission defined: .github/workflows/freebsd.yml:1","Warn: no topLevel permission defined: .github/workflows/linux.yml:1","Warn: no topLevel permission defined: .github/workflows/mdbook.yml:1","Warn: no topLevel permission defined: .github/workflows/omnios.yml:1","Warn: no topLevel permission defined: .github/workflows/sanitizer.yml:1","Warn: no topLevel permission defined: .github/workflows/windows.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: MIT License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:44: update your workflow using https://app.stepsecurity.io/secureworkflow/nanomsg/nng/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/nanomsg/nng/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:60: update your workflow using https://app.stepsecurity.io/secureworkflow/nanomsg/nng/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:74: update your workflow using https://app.stepsecurity.io/secureworkflow/nanomsg/nng/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/coverage.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/nanomsg/nng/coverage.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/coverage.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/nanomsg/nng/coverage.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/coverage.yml:39: update your workflow using https://app.stepsecurity.io/secureworkflow/nanomsg/nng/coverage.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/coverage.yml:63: update your workflow using https://app.stepsecurity.io/secureworkflow/nanomsg/nng/coverage.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/darwin.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/nanomsg/nng/darwin.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/freebsd.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/nanomsg/nng/freebsd.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/freebsd.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/nanomsg/nng/freebsd.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/linux.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/nanomsg/nng/linux.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/mdbook.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/nanomsg/nng/mdbook.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/mdbook.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/nanomsg/nng/mdbook.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/mdbook.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/nanomsg/nng/mdbook.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/omnios.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/nanomsg/nng/omnios.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/omnios.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/nanomsg/nng/omnios.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/sanitizer.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/nanomsg/nng/sanitizer.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/windows.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/nanomsg/nng/windows.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/windows.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/nanomsg/nng/windows.yml/main?enable=pin","Warn: downloadThenRun not pinned by hash: etc/codecov.sh:19","Info:   0 out of  13 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   7 third-party GitHubAction dependencies pinned","Info:   0 out of   1 downloadThenRun dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"SAST","score":9,"reason":"SAST tool detected but not run on all commits","details":["Info: SAST configuration detected: CodeQL","Warn: 26 commits out of 28 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-21T21:00:06.553Z","repository_id":14398387,"created_at":"2025-08-21T21:00:06.553Z","updated_at":"2025-08-21T21:00:06.553Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28934639,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-31T07:49:44.436Z","status":"ssl_error","status_checked_at":"2026-01-31T07:49:34.274Z","response_time":128,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T00:00:56.506Z","updated_at":"2026-01-31T08:03:51.592Z","avatar_url":"https://github.com/nanomsg.png","language":"C","funding_links":["https://github.com/sponsors/gdamore","https://patreon.com/gedamore","https://leanpub.com/nngref2e"],"categories":["Inter-process communication","C","进程间通信","Network"],"sub_categories":[],"readme":"# nng - nanomsg-next-gen\n\n[![Stand With Ukraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/badges/StandWithUkraine.svg)](https://stand-with-ukraine.pp.ua)\n[![Linux Status](https://img.shields.io/github/actions/workflow/status/nanomsg/nng/linux.yml?branch=main\u0026logoColor=grey\u0026logo=linux\u0026label=)](https://github.com/nanomsg/nng/actions)\n[![Windows Status](https://img.shields.io/github/actions/workflow/status/nanomsg/nng/windows.yml?branch=main\u0026logoColor=grey\u0026logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0ODc1IDQ4NzUiPjxwYXRoIGZpbGw9ImdyZXkiIGQ9Ik0wIDBoMjMxMXYyMzEwSDB6bTI1NjQgMGgyMzExdjIzMTBIMjU2NHpNMCAyNTY0aDIzMTF2MjMxMUgwem0yNTY0IDBoMjMxMXYyMzExSDI1NjQiLz48L3N2Zz4=\u0026label=)](https://github.com/nanomsg/nng/actions)\n[![macOS Status](https://img.shields.io/github/actions/workflow/status/nanomsg/nng/darwin.yml?branch=main\u0026logoColor=grey\u0026logo=apple\u0026label=)](https://github.com/nanomsg/nng/actions)\n[![FreeBSD Status](https://img.shields.io/github/actions/workflow/status/nanomsg/nng/freebsd.yml?branch=main\u0026logoColor=grey\u0026logo=freebsd\u0026label=)](https://github.com/nanomsg/nng/actions)\n[![illumos Status](https://img.shields.io/github/actions/workflow/status/nanomsg/nng/omnios.yml?branch=main\u0026logoColor=grey\u0026logo=accuweather\u0026label=)](https://github.com/nanomsg/nng/actions)\n[![Coverage](https://img.shields.io/codecov/c/github/nanomsg/nng/branch/main?logo=codecov\u0026logoColor=grey\u0026label=)](https://codecov.io/gh/nanomsg/nng/tree/main)\n[![Discord](https://img.shields.io/discord/639573728212156478?label=\u0026logo=discord)](https://discord.gg/Xnac6b9)\n[![Manual](https://img.shields.io/static/v1?label=\u0026message=docs\u0026logo=mdbook\u0026logoColor=silver\u0026color=blue)](https://nng.nanomsg.org/ref)\n[![AsciiDoc](https://img.shields.io/static/v1?label=\u0026message=docs\u0026logo=asciidoctor\u0026logoColor=silver\u0026color=blue)](https://nng.nanomsg.org/man)\n[![MIT License](https://img.shields.io/github/license/nanomsg/nng.svg?logoColor=silver\u0026logo=open-source-initiative\u0026label=\u0026color=blue)](https://github.com/nanomsg/nng/blob/main/LICENSE.txt)\n[![Latest Pre-Release](https://img.shields.io/github/v/release/nanomsg/nng.svg?logo=github\u0026label=)](https://github.com/nanomsg/nng/releases)\n[![Latest Release](https://img.shields.io/github/v/release/nanomsg/nng.svg?include_prereleases\u0026logo=github\u0026label=)](https://github.com/nanomsg/nng/releases)\n\nPlease see [here](UKRAINE.md) for an important message for the people of Russia.\n\n\u003e [!NOTE]\n\u003e This is the development branch for NNG.\n\u003e The content here is\n\u003e under development and may not be suitable for production use.\n\u003e Please use the [`stable`](https://github.com/nanomsg/nng/tree/stable) branch\n\u003e for the latest stable release.\n\u003e\n\u003e As a major release, there are some breaking API changes,\n\u003e but a [migration guide](docs/ref/migrate/nng1.md) is\n\u003e available to help with migrating from NNG 1.x.\n\n\u003e [!NOTE]\n\u003e If you are looking for the legacy version of nanomsg, please\n\u003e see the [libnanomsg](https://github.com/nanomsg/nanomsg) repository.\n\nThis project is a rewrite of the Scalability Protocols\nlibrary known as [nanomsg](https://github.com/nanomsg/nanomsg),\nand adds significant new capabilities, while retaining\ncompatibility with the original.\n\nIt may help to think of this as \"nanomsg-next-generation\".\n\n## NNG: Lightweight Messaging Library\n\nNNG, like its predecessors [nanomsg](http://nanomsg.org) (and to some extent\n[ZeroMQ](http://zeromq.org/)), is a lightweight, broker-less library,\noffering a simple API to solve common recurring messaging problems,\nsuch as publish/subscribe, RPC-style request/reply, or service discovery.\nThe API frees the programmer from worrying about details like connection\nmanagement, retries, and other common considerations, so that they\ncan focus on the application instead of the plumbing.\n\nNNG is implemented in C, requiring only a relatively modern C compiler (C11) and CMake to build.\nIt can be built as a shared or a static library, and is readily\nembeddable. It is also designed to be easy to port to new platforms\nif your platform is not already supported.\n\n## License\n\nNNG is licensed under a liberal, and commercial friendly, MIT license.\nThe goal to the license is to minimize friction in adoption, use, and\ncontribution.\n\n## Enhancements (Relative to nanomsg)\n\nHere are areas where this project improves on \"nanomsg\":\n\n- _Reliability_\n\n  NNG is designed for production use from the beginning.\n  Every error case is considered, and it is designed to avoid crashing except\n  in cases of gross developer error.\n  (Hopefully we don't have any of these in our own code.)\n\n- _Scalability_\n\n  NNG scales out to engage multiple cores using a bespoke asynchronous I/O\n  framework, using thread pools to spread load without exceeding typical\n  system limits.\n\n- _Maintainability_\n\n  NNG's architecture is designed to be modular and easily grasped by developers\n  unfamiliar with the code base. The code is also well documented.\n\n- _Extensibility_\n\n  Because it avoids ties to file descriptors, and avoids confusing interlocking\n  state machines, it is easier to add new protocols and transports to NNG.\n  This was demonstrated by the addition of new transports such as TLS.\n\n- _Security_\n\n  NNG provides TLS (1.2 and optionally 1.3) enabled transports, offering\n  support for robust and industry standard authentication and encryption.\n  In addition, it is hardened to be resilient against malicious attackers,\n  with special consideration given to use in a hostile Internet.\n\n- _Usability_\n\n  NNG eschews slavish adherence parts of the more complex and less well\n  understood POSIX APIs, while adopting the semantics that are familiar and\n  useful. New APIs are intuitive, and the optional support for separating\n  protocol context and state from sockets makes creating concurrent\n  applications vastly simpler than previously possible.\n\n## Compatibility\n\nThis project offers both wire compatibility and API compatibility,\nso most nanomsg users can begin using NNG right away.\n\nExisting nanomsg and [mangos](https://github.com/nanomsg/mangos) applications\ncan inter-operate with NNG applications automatically.\n\nThat said, there are some areas where legacy nanomsg still offers\ncapabilities NNG lacks -- specifically enhanced observability with\nstatistics, and tunable prioritization of different destinations\nare missing, but will be added in a future release.\n\nAdditionally, some API capabilities that are useful for foreign\nlanguage bindings are not implemented yet.\n\nSome simple single threaded, synchronous applications may perform better under\nlegacy nanomsg than under NNG. (We believe that these applications are the\nleast commonly deployed, and least interesting from a performance perspective.\nNNG's internal design is slightly less efficient in such scenarios, but it\ngreatly benefits when concurrency or when multiple sockets or network peers\nare involved.)\n\n## Supported Platforms\n\nNNG supports Linux, macOS, Windows, illumos, Solaris,\nFreeBSD, Android, and iOS.\nIt is regularly tested against macOS, Windows, OmniOS, Ubuntu, and FreeBSD.\nMost other POSIX platforms should work out of\nthe box but have not been tested. Very old versions of otherwise supported\nplatforms might not work.\n\nOfficially, NNG only supports operating systems that are supported by\ntheir vendors. For example, Windows versions 8.1 and lower are no longer\nofficially supported, and macOS versions predating Ventura are no longer\nofficially supported. Very old versions of systems may or may not work,\nand we will generally expend no effort trying to make an unsupported system\nfunction.\nWe generally only test relatively recent versions of supported systems.\n\n## Requirements\n\nTo build this project, you will need a C11 compatible compiler and\n[CMake](http://www.cmake.org) version 3.15 or newer.\n\nWe recommend using the [Ninja](https://ninja-build.org) build\nsystem (pass `-G Ninja` to CMake) when you can.\n(And not just because Ninja sounds like \"NNG\" -- it's also\nblindingly fast and has made our lives as developers measurably better.)\n\nIf you want to build with TLS support you will also need a supported\nTLS library. Currently [Mbed TLS](https://tls.mbed.org), [WolfSSL](https://wolfssl.com),\nand [OpenSSL](https://openssl.org) all enjoy some level support in NNG.\n\nSee the [build instructions](docs/BUILD_TLS.md) for details.\n\n## Quick Start\n\nWith a Linux or UNIX environment:\n\n```sh\n$ mkdir build\n$ cd build\n$ cmake -G Ninja ..\n$ ninja\n$ ninja test\n$ ninja install\n```\n\n## Reference Manual\n\nThe API documentation is currently in transition, as we are converting it from\nAsciidoc to `mdbook`. Most of the content has now been converted, and you can\nsee it at [here](https://nng.nanomsg.org/ref). Part of the conversion includes\na substantial reorganization for improved usability, with major content revisions\nand additions for NNG 2.0.\n\nThe remaining Asciidoc format documentation is in the `docs/man` subdirectory, and also\n[online](https://nng.nanomsg.org/man). It will eventually all be converted before 2.0\nis fully released.\n\nYou can also purchase a copy of the\n[**NNG Reference Manual**](http://staysail.tech/books/nng_reference/index.html).\n(It is published in both electronic and printed formats.)\nPurchases of the book help fund continued development of NNG.\n\n## Example Programs\n\nSome demonstration programs have been created to help serve as examples.\nThese are located in the `demo` directory.\n\n## Legacy Compatibility\n\nMigration from `libnanomsg` APIs is fairly straight-forward for most applications.\nA [migration guide](docs/ref/migrate/nanomsg.md) is available to assist.\n\n## Commercial Support\n\nCommercial support for NNG is available.\n\nPlease contact\n[Staysail Systems, Inc.](mailto:info@staysail.tech)\nto inquire further.\n\n## Commercial Sponsors\n\nThe development of NNG has been made possible through the generous\nsponsorship of\n[Capitar IT Group BV](https://www.capitar.com)\nand\n[Staysail Systems, Inc.](http://staysail.tech).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnanomsg%2Fnng","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnanomsg%2Fnng","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnanomsg%2Fnng/lists"}