python-chirp
Message-passing for everyone
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
- 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