Overview

Why yet another RPC library?

There are few RPC libraries for python, but they do not fit some our requirements.

Other libraries for python

XML-RPC

Monster. Very slow. Only blocking calls.

Pyro or any other python-specific library

Quite fast, but available only in python. You cant connect with Pyro client to anything except Pyro itself. Also Pyro has some weird glitches. For example, after client connects to server, server will issue handshake! This is weird, because if you accidentially connect to any other service (e.g. http server) you will need to wait for handshake from server untill timeout occurs. Same happens if pyro server freezes for some reason.

JSON-RPC

Good enough, but dont allows streaming due to JSON nature.

MessagePackRPC

There are few available libraries for python currently. But they dont allow streaming, yielding and easy integration into already existing event loops.

Why based on MessagePackRPC?

MessagePack itself is a masterpiece. It has very low footprint, very fast by design and allows streaming. There are already a lot of MessagePackRPC libraries made already. You can run MessagePackRPC server in Java and it would be great if we will be able to connect it with our client. And it would be perfect if you will be able to connect to joint-server from other languages using already existing MessagePackRPC libraries.

Thats why we made joint based on MessagePackRPC. It fully implements stock MessagePackRPC specification, but if you connect to joint-server from joint-client, you are able to use extended version of Protocol specification.