Martin Sústrik, one of the orignal developers of 0MQ, has been working on nanomsg since last year and has now announced that the project has reached its first alpha 0.1 release. Nanomsg offers a high performace implementation of a number of what are called “scalability protocols” such as one-to-one (PAIR), many-to-many (BUS), clustered stateless services (REQREP), publish and subscribe (PUBSUB), message aggregation (FANIN), balanced message distribution (FANOUT) and application state queries (SURVEY). These protocols are transported over, currently, three transport layers, within process (INPROC), within processes on a system (IPC) or over TCP networks.
Designed to look like BSD sockets C API to applications and written in C with no extra dependencies and licensed under a MIT/X11 licence, nanomsg has the potential to be an open standard within messaging. Sústrik has previously run into issues with making communication infrastructure code GPL and, in a January 2013 blog post, explains why those issues have sent him on the course of creating a permissively licensed messaging platform.
But its far from just about the licensing. The change from ZeroMQ’s C++ implementation to nanomsg’s C implementation should mean less memory allocation and fragmentation. Where ZeroMQ had no formal API for plugging in transports and protocols, which led to stagnation in adding either, nanomsg has APUs for both. Sústrik says he’s also reworked the threading model, built internal interactions as state machines for easier development, added support for IOCP on Windows, moved to level triggered polling and implemented outbound traffic priorities.
For more on these, check the release announcement which also links to various detailed blog postings on the features, explaining motivation and function. Those scalability protocols – the plan is to get them standardised at the IETF opening the way for big things. Put nanomsg on your projects to watch and check out list; something big, despite the name, could well be happening there.