Message-passing and actor-based programming for everyone
It is part of Concreteclouds and the C99 implementation of pychirp.
[1] | Python/hypothesis based test-suite in external project seecc. |
[2] | Coverage enforced by tests (on travis, after 1.0 release) |
- Fully automatic connection setup
- TLS support
- Connections to 127.0.0.1 and ::1 aren't encrypted
- We support and test with OpenSSL, but we prefer LibreSSL
- Flow control
- Chirp won't overload peers out-of-the box, if you work with long requests >2.5s adjust the timeout
- Peer-load is reported so you can implement load-balancing easily
- Easy message routing
- Robust
- No message can be lost without an error (or it is a bug)
- Due to retry it takes a very bad network for messages to be lost
- Very thin API
- Minimal code-base, all additional features will be implemented as modules in an upper layer
- Fast
- Up to 50'000 msg/s on a single-connection (encrypted 35'000 msg/s)
- Up to 100'000 msg/s in star-topology (encrypted same)
- Which shows that chirp is highly optimized, but still if the network delay is bigger star-topology is the way to go.
Build dependencies:
- python3 [3]
- make
- gcc or clang
Documentation build dependencies:
- sphinx
- graphviz
Dependencies:
- libuv
- openssl
Install to prefix /usr/local. (with docs)
cd build
../configure --doc
make
make check
sudo make install
Install to prefix /usr. (without docs)
cd build
../configure --prefix /usr
make
make check
sudo make install
In-source build is also possible.
./configure
make
make check
sudo make install
[3] | Script-headers can be patched to work with python2. It also possible to generate the makefile on a different system (for example in a embedded scenario) |
- Install Visual Studio 2015 if you want to build for python 3
- Select Git for Windows in Visual Studio Installer or install it
- Install Visual Studio 2008 Express
- Install Windows SDK for Windows Server 2008 and .NET Framework 3.5 (python 2)
Note
To support python 2.7 == Visual Studio 2008, we use c99conv to convert to c89 and we support python 3.5+ == Visual Studio 2015 without c99conv. Any future version of python that uses a newer version of Visual Studio has to added to the build-system explicitly.
python configure
make.cmd
Test dependencies:
- cppcheck
- abi-compliance-checker
cd build
../configure --dev
make test
In development mode the make file has a help:
make
Please memcheck your code, we haven't automated memcheck, yet:
valgrind --tool=memcheck ./src/[relevant]_etest
Chirp has a mode to debug macros:
../configure --dev
make clean all MACRO_DEBUG=True
gdb src/structures_etest
This requires clang-format to be installed.
If a tool is not available on your platform or you have a old version of cppcheck (cppcheck is known to behave very different across versions), you can use the docker based tests.
./ci/alpine.sh
Travis will also run this script, so you can also use it to reproduce errors on travis.
You can also run a shell.
./ci/alpine.sh shell
./ci/arch.sh shell
No development build available.
- make check
- Not instrumented (release mode), goal: checking compatibility
- make test
- Instrumented (dev mode), goal: helping developers to find bugs
By default vim will treat *.h files as cpp, but syntastic has no make-checker for cpp, so *.h would not get checked.
let g:syntastic_c_checkers = ['make']
au BufNewFile,BufRead *.h set ft=c
With this setting syntastic will check the following:
- Clang-based build errors
- Line length
- Trailing whitespaces
If you use clang complete, we recommend
let g:clang_auto_select = 1
let g:clang_snippets = 1
let g:clang_snippets_engine = 'clang_complete'
LGPL 3.0
- Ask first
- You must sign-over the changes to the Concrete Clouds Project
- So you usually just want to open change-requests