|
| 1 | +# mangos™ v3 |
| 2 | + |
| 3 | + |
| 4 | +[](https://github.com/nanomsg/mangos/actions) |
| 5 | +[](https://github.com/nanomsg/mangos/actions) |
| 6 | +[](https://github.com/nanomsg/mangos/actions) |
| 7 | +[](https://codecov.io/gh/nanomsg/mangos) |
| 8 | +[](https://discord.gg/wewTkby) |
| 9 | +[](https://pkg.go.dev/go.nanomsg.org/mangos/v3) |
| 10 | +[](https://github.com/nanomsg/mangos/blob/master/LICENSE) |
| 11 | +[](https://github.com/nanomsg/mangos/releases) |
| 12 | + |
| 13 | + |
| 14 | + |
| 15 | +_Mangos™_ is an implementation in pure Go of the *SP* |
| 16 | +(`Scalability Protocols`) messaging system. |
| 17 | +These are colloquially known as `nanomsg`. |
| 18 | + |
| 19 | +> *NOTE*: The import path has changed! Please change any references |
| 20 | +to `go.nanomsg.org/mangos/v3`. |
| 21 | +The old v2 imports will still work for old applications, provided that |
| 22 | +a sufficiently modern version of Go is used. However, no further work |
| 23 | +will be done on earlier versions. |
| 24 | +Earlier versions will still inter-operate with this version, except that |
| 25 | +within the same process the `inproc` transport can only be used by |
| 26 | +consumers using the same version of mangos. |
| 27 | + |
| 28 | +The modern C implementation of the SP protocols is available as |
| 29 | +[NNG™](https://github.com/nanomsg/nng). |
| 30 | + |
| 31 | +The original implementation of the SP protocols is available as |
| 32 | +[nanomsg™](http://www.nanomsg.org). |
| 33 | + |
| 34 | +Generally (modulo a few caveats) all of these implementations can inter-operate. |
| 35 | + |
| 36 | +The design is intended to make it easy to add new transports, |
| 37 | +as well as new topologies (`protocols` in SP parlance.) |
| 38 | + |
| 39 | +At present, all the Req/Rep, Pub/Sub, Pair, Bus, Push/Pull, and |
| 40 | +Surveyor/Respondent patterns are supported. |
| 41 | +This project also supports an experimental protocol called Star. |
| 42 | + |
| 43 | +Supported transports include TCP, inproc, IPC, WebSocket, WebSocket/TLS and TLS. |
| 44 | + |
| 45 | +Basic interoperability with nanomsg and NNG has been verified (you can do |
| 46 | +so yourself with `nanocat` and `macat`) for all protocols and transports |
| 47 | +that _NNG_ and _nanomsg_ support, except for the _ZeroTier_ transport and the PAIRv1 |
| 48 | +protocol, which are only supported in _NNG_ at this time. |
| 49 | + |
| 50 | +There are a number of projects that use these products together. |
| 51 | + |
| 52 | +## Documentation |
| 53 | + |
| 54 | +For API documentation, see https://pkg.go.dev/go.nanomsg.org/mangos/v3. |
| 55 | + |
| 56 | +## Testing |
| 57 | + |
| 58 | +This package supports internal self tests, which can be run in |
| 59 | +the idiomatic Go way. |
| 60 | +(Note that most of the tests are in a test subdirectory.) |
| 61 | + |
| 62 | + $ go test go.nanomsg.org/mangos/v3/... |
| 63 | + |
| 64 | +There are also internal benchmarks available: |
| 65 | + |
| 66 | + $ go test -bench=. go.nanomsg.org/mangos/v3/test |
| 67 | + |
| 68 | +## Commercial Support |
| 69 | + |
| 70 | +[Staysail Systems, Inc.](mailto:info@staysail.tech) offers |
| 71 | +[commercial support](http://staysail.tech/support/mangos) for mangos. |
| 72 | + |
| 73 | +## Examples |
| 74 | + |
| 75 | +Some examples are posted in the directories under `examples/` in this project. |
| 76 | + |
| 77 | +These examples are rewrites (in Go) of Tim Dysinger's |
| 78 | +[Getting Started with Nanomsg](http://nanomsg.org/gettingstarted/index.html). |
| 79 | + |
| 80 | +Running `go doc` in the example directories will yield information about how |
| 81 | +to run each example program. |
| 82 | + |
| 83 | +Enjoy! |
| 84 | + |
| 85 | +______ |
| 86 | + |
| 87 | +Copyright 2021 The Mangos Authors |
| 88 | + |
| 89 | +mangos™, Nanomsg™ and NNG™ are [trademarks](http://nanomsg.org/trademarks.html) of Garrett D'Amore. |
0 commit comments