Message-passing for everyone


Keywords
actor-model, distributed, distributed-systems, message-passing
License
MPL-2.0
Install
pip install libchirp==1.2.1b3

Documentation

python-chirp

Message-passing for everyone

travis rtd mpl works

Read the Docs

chirp

Supported by adsy

On twitter @libchirp

BETA-RELEASE: 1.2.1

Features

  • Fully automatic connection setup
  • TLS support
    • Connections to 127.0.0.1 and ::1 aren't encrypted
  • Easy message routing
  • Robust
    • No message can be lost without an error (in sync mode)
  • Very thin API
  • Minimal code-base, all additional features will be implemented as modules in an upper layer
  • Fast

Install

We only support python 3.5+

Dependencies

Alpine:       apk add python3-dev libffi-dev libressl-dev libuv-dev build-base
Debian-based: apt install python3-dev libffi-dev libssl-dev libuv1-dev build-essential
RPM-based:    yum install python3-devel libffi-devel openssl-devel libuv-devel gcc
Arch:         pacman -S libffi openssl libuv
OSX:          brew install libffi openssl libuv

As long as libchirp is beta we only provide wheels for Windows: building on Windows is very complex.

pip

If we have wheels for your platform, you don't need to install any dependencies.

pip install libchirp

setup.py

pip install cffi
python setup.py install

testing

python libchirp_cffi.py debug
pytest

Changes

2018-12-14 - 1.2.1b3

  • Fix race-condition in _send_cb

2018-12-12 - 1.2.1b2

Read the Docs 1.2.1

  • Update to libchirp.c 1.2.1-beta
  • Implement request API
    • Send a request as message and return the answer to that request

2018-03-21 - 1.1.2b0

  • Update to libchirp.c 1.1.1-beta
    • Fixes deadlock in send
    • Fixes bug when disabling signals
  • Disable signals

2018-03-20 - 1.1.1b0

  • Update to libchirp.c 1.1.0-beta

License

libchirp is subject to the terms of the Mozilla Public License, v. 2.0. Creating a "Larger Work" under the GNU (Lesser) General Public License is explicitly allowed. Contributors to libchirp must agree to the Mozilla Public License, v. 2.0.

Contributing

Please open an issue first. Contributions of missing features are very welcome, but we want to keep to scope of libchirp minimal, so additional features should probably be implemented in an upper layer.

Most valuable contributions:

  • Use it and report issues
  • Fix documentation
  • Promote libchirp
  • Contribute any kind of tests or fuzzing (if possible hypothesis based)
  • Make bindings for your favorite language
  • Make packages for your favorite distribution
  • A uvloop based implementation, see also issue