Blogged by Ujihisa. Standard methods of programming and thoughts including Clojure, Vim, LLVM, Haskell, Ruby and Mathematics written by a Japanese programmer. github/ujihisa

Wednesday, July 4, 2012

ZeroMQ Versions and Bindings

ZeroMQ has two major versions; 2.x.y and 3.x.y. Even though the latter is still release candidate, people are already using it. The problem is that these two versions don't have compatibility. If one system uses version 3.x.y, whole other systems which talk to the system have to use 3.x.y.

There are some binding libraries for each programming languages. Note that some of them don't support one of the versions. The below is the list as of today.

  • Haskell
    • zeromq-haskell: 2.1.x
    • zeromq-haskell3: 3.1.x
    • just use cabal to install them
  • Clojure
    • (Not directly for Clojure but for JVM languages in general)
    • jzmq: both 2.x.y and 3.x.y
    • there are no official clojar/maven/apt/portage packages. one for gentoo is here
  • Scala
    • zeromq-scala-binding: 2.1.x
      • (akka-zeromq uses it)
    • jzmq: both 2.x.y and 3.x.y
      • (ditto in Clojure)
  • Ruby
    • rbzmq: 2.x.y
  • Python
    • pyzmq: 2.x.x (experimentally 3.x.x)

Use Haskell, Clojure, Scala or Python to use ZeroMQ even if you use zeromq version 2 just in case at least one system uses version 3. If you need to use Ruby, just use JRuby to use jzmq. It's not very easy to install jzmq, but if you are using Gentoo, it's easy.


  1. Perl:
    supports libzmq2.x, libzmq3.x, partial czmq support.