A Lua binding library for ZeroMQ, providing both C and FFI implementations for high-performance messaging.
lzmq is a Lua binding library for ZeroMQ, a high-performance asynchronous messaging library. It allows Lua developers to integrate ZeroMQ's messaging patterns (like pub/sub, request/reply) into their applications, enabling building of scalable distributed systems. The library provides both C and FFI implementations, offering flexibility and performance optimizations.
Lua developers and engineers building distributed systems, networked applications, or requiring high-performance inter-process communication within Lua environments.
Developers choose lzmq for its dual C/FFI implementation, which allows performance tuning and compatibility with LuaJIT, along with comprehensive ZeroMQ feature support and clear documentation with examples from the ZeroMQ Guide.
Lua binding to ZeroMQ
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Offers both C and FFI bindings, allowing developers to choose based on performance needs, with benchmarks showing FFI can match or exceed native libzmq throughput in tests.
Seamlessly integrates with llthreads2 via the lzmq.threads module, enabling concurrent operations for scalable distributed applications in Lua.
Exposes the full ZeroMQ API, including sockets and contexts, with detailed documentation and examples adapted from the ZeroMQ Guide for practical use.
Provides in-depth throughput and latency benchmarks, demonstrating competitive performance, such as FFI implementations achieving up to 631 Mb/s in inproc tests.
Not a drop-in replacement for lua-zmq, with specific API differences like zmq.init requiring io_threads and message handling changes, forcing code adjustments for legacy projects.
Requires separate installation of llthreads2 for threaded functionality, adding setup steps and potential compatibility headaches in some Lua environments.
Performance testing requires manual file copying and is limited to LuaJIT, making it inaccessible for standard Lua users and hindering quick evaluation.