MyNixOS website logo
Description

Bindings to ZeroMQ 2.1.x.

The 0MQ lightweight messaging kernel is a library which extends the standard socket interfaces with features traditionally provided by specialised messaging middleware products. 0MQ sockets provide an abstraction of asynchronous message queues, multiple messaging patterns, message filtering (subscriptions), seamless access to multiple transport protocols and more. This library provides the Haskell language binding to 0MQ and supports 0MQ 2.1.x.

This library provides Haskell bindings to zeromq (http://zeromq.org).

Current status

This software currently has beta status, i.e. it had seen limited testing.

Version 0.8.4 - Various fixes to work with GHC 7.4.1.

Version 0.8.3 - Derive Read in SocketOption and PollEvent.

Version 0.8.2 - Revert changes to support 0MQ 2.x as well as 3.x in a single package. Instead git branches will be used to track the various 0MQ versions and a separate zeromq-haskell-3 library will be released to hackage. Also this releases handles EINTR properly in socket option setting/getting.

Version 0.8.1 - zmqVersion has been renamed to version and reports the runtime version of 0MQ, instead of the compile time version macros.

Version 0.8.0 - zeromq-haskell can now be compiled either against 0MQ 2.x (default) or 0MQ 3.x.

Version 0.7.1 - Removes unix dependency

Verison 0.7.0 - Changes semantics of poll to return a list of the same length as it's parameter to allow identification of Sockets by index. PollEvent gets another constructor None to denote the absence of polling events.

Version 0.6.0 - This version renames "with" to "withContext" and introduces a new "withSocket" resource wrapper. The API is otherwise identical to 0.5.0

This software requires zeromq version 2.1.x.

Installation

As usual for Haskell packages this software is installed best via Cabal (http://www.haskell.org/cabal). In addition to GHC it depends on 0MQ of course.

Notes

zeromq-haskell mostly follows 0MQ's API. One difference though is that sockets are parameterized types, i.e. there is not one socket type but when creating a socket the desired socket type has to be specified, e.g. Pair and the resulting socket is of type Socket Pair. This additional type information is used to ensure that only options applicable to the socket type can be set, hence ZMQ_SUBSCRIBE and ZMQ_UNSUBSCRIBE which only apply to ZMQ_SUB sockets have their own functions (subscribe and unsubscribe) which can only be used with sockets of type Socket Sub.

Other differences are mostly for convenience. Also one does not deal directly with 0MQ messages, instead these are created internally as needed.

Examples

The test folder contains some simple tests mostly mimicking the ones that come with 0MQ.

Bugs

If you find any bugs or other shortcomings I would greatly appreciate a bug report, preferably via http://github.com/twittner/zeromq-haskell/issues or e-mail to [email protected].

Metadata

Version

0.8.4

License

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows