Erlang port driver that wraps the nanomsg C library, enabling Erlang systems to communicate with nanomsg endpoints.
enm is an Erlang port driver that provides a native interface to the nanomsg C library, allowing Erlang applications to leverage nanomsg's scalable communication protocols. It enables Erlang systems to interoperate with other nanomsg endpoints while offering an API that aligns with Erlang's standard networking idioms like gen_tcp and gen_udp.
Erlang developers building distributed systems or microservices that require high-performance, scalable inter-process communication using nanomsg protocols. It is also suitable for developers needing to integrate Erlang applications with existing nanomsg-based systems.
Developers choose enm because it provides a full, idiomatic Erlang API for nanomsg, making it familiar to those already using Erlang's standard networking modules. Its support for all nanomsg scalability protocols and flexible socket options allows seamless integration into Erlang's concurrency and fault-tolerance patterns.
Erlang driver for nanomsg
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Implements all nanomsg scalability protocols including req/rep, pub/sub, pipeline, pair, bus, and survey, enabling Erlang apps to leverage diverse communication patterns seamlessly.
Functions like send/2, recv/1, and controlling_process/2 mirror standard Erlang networking modules such as gen_tcp and gen_udp, reducing the learning curve for experienced Erlang developers.
Supports configurable socket options including active/passive modes, data modes (binary/list), and protocol-specific settings like deadlines for surveyor sockets, providing fine-grained control.
Works with inproc, IPC, and TCP transports using nanomsg URL formats or Erlang record types for type-safe address specification, enhancing interoperability.
The README explicitly states that enm is 'new' and 'experimental,' with features subject to change, making it risky for production use due to potential breaking changes.
Not all nanomsg socket options are implemented yet, which could limit functionality for advanced use cases that rely on missing options, as mentioned in the README.
Based on nanomsg version 1.0.0, which might lack features, bug fixes, or performance improvements from newer releases, potentially causing compatibility issues.
Requires knowledge of both Erlang port drivers and nanomsg concepts, which can be a barrier for developers not familiar with either technology, adding complexity to setup and debugging.