[nanomsg] initial code repo for Go version of SP protocols

  • From: Garrett D'Amore <garrett@xxxxxxxxxx>
  • To: nanomsg@xxxxxxxxxxxxx
  • Date: Sun, 23 Mar 2014 18:10:35 -0700

All,

I’ve finished some debugging, and am now ready to announce the first public 
release of my SP protocol implementation in pure Go.

https://bitbucket.org/gdamore/sp

There’s also documentation here:  https://godoc.org/bitbucket.org/gdamore/sp

This is licensed under Apache License 2.0

This is *VERY* preliminary.  In particular, I’ve only implemented REP, REQ, 
XREP, XREQ over TCP and IPC at this point.  (I’ve not tested interop between 
nanomsg with IPC yet, but it seems to work with TCP, and I’d be somewhat 
surprised if it doesn’t just work with IPC.)  The implementation of each of 
those protocols is only about 100 lines each.  The implementation of IPC and 
TCP are also only about 100 lines each.  (Admittedly, they make use of a common 
core that is a little bit larger, but I expect TLS to only require about 
100-150 lines.   Including whitespace and comments. :-)

I will probably implement Pub / Sub in the next day or so.  I expect few if any 
challenges there.  I’ll have to provide a trie, and I was somewhat surprised to 
see that nanomsg handles the subscription filters on the subscriber side rather 
than the publisher.  (I guess this makes much less work for the publisher to 
keep track of things, and a vastly simpler protocol, but it also assumes 
network bandwidth is cheap.  It would work better over a true 
broadcast/multicast medium too.)

The IPC also only supports Unix like operating systems.  golang has no native 
support for named pipes, and I don’t have a Microsoft platform to test any 
implementation on, even if I were tempted to write one myself (and to be 
honest, I’m not. :-)

I would appreciate any *useful* feedback anyone might have.  The bitbucket repo 
has a tracker.  For the moment the issue tracker accepts anonymous posts.  
(Until such time as I get spam and have to disable anonymous issue posting. :-)

I’d also welcome any collaboration, if folks here want to contribute.

  - Garrett


Other related posts: