CAF: C++ Actor Framework
CAF is an open source C++11 actor model implementation featuring lightweight & fast actor implementations, pattern matching for messages, network transparent messaging, and more.
[] (https://gitter.im/actor-framework/chat) [] (https://jenkins.inet.haw-hamburg.de/view/CAF%20Dashboard) [] (http://actor-framework.readthedocs.io/en/latest/?badge=latest) [] (https://scan.coverity.com/projects/5555) [] (https://waffle.io/actor-framework/actor-framework) [] (https://waffle.io/actor-framework/actor-framework)
Community
- Chat: https://gitter.im/actor-framework/chat
- Mailing List: https://groups.google.com/d/forum/actor-framework
- Twitter: https://twitter.com/actor_framework
Online Resources
- Homepage: http://www.actor-framework.org
- Developer Blog: http://blog.actor-framework.org
- Doxygen: http://www.actor-framework.org/doc
- HTML Manual: https://actor-framework.readthedocs.io
- PDF Manual: http://www.actor-framework.org/pdf/manual.pdf
- HTML Manual (develop version): https://actor-framework.readthedocs.io/en/develop/
- PDF Manual (develop version): http://www.actor-framework.org/develop/pdf/manual.pdf
Report Bugs / Get Help
- Open Issues on GitHub: https://github.com/actor-framework/actor-framework/issues/new
- Ask Questions on StackOverflow: https://stackoverflow.com/questions/ask?tags=c%2b%2b-actor-framework
Get CAF
Linux Packages
We provide binary packages for several Linux distributions using the openSUSE Build Service. Please follow the linked installation guides below or alternatively visit our OBS project homepage: https://build.opensuse.org/package/show/devel:libraries:caf/caf
package | description | link |
---|---|---|
caf | binaries only | stable nightly |
caf-devel | binaries and headers | stable nightly |
FreeBSD Ports
We maintain a port for CAF, which you can install as follows:
pkg install caf
Alternatively, you can go to /usr/ports/devel/caf
and tweak a few
configuration options before installing the port:
make config
make install clean
Homebrew
You can install the latest stable release with:
brew install caf
Alternatively, you can use the development branch by using:
brew install caf --HEAD
Get the Sources
- git clone https://github.com/actor-framework/actor-framework.git
- cd actor-framework
Build CAF from Source
The easiest way to build CAF is to use the configure
script. Other available
options are using CMake directly or
SNocs.
configure
Script
Using the The script is a convenient frontend for CMake
. See configure -h
for a list of available options or read the
[online documentation]
(https://github.com/actor-framework/actor-framework/wiki/Configure-Options).
./configure
make
make test
make install [as root, optional]
Using CMake
All available CMake variables are available
online.
CAF also can be included as CMake submodule or added as dependency to other
CMake-based projects using the file cmake/FindCAF.cmake
.
Using SNocs
A SNocs workspace is provided by GitHub user osblinnikov and documented online.
Dependencies
- CMake
- Pthread (until C++11 compilers support the new
thread_local
keyword)
Supported Compilers
- GCC >= 4.8
- Clang >= 3.2
- MSVC >= 2015, update 3
Supported Operating Systems
- Linux
- Mac OS X
- FreeBSD 10
- Windows >= 7 (currently static builds only)
Scientific Use
If you use CAF in a scientific context, please use one of the following citations:
@inproceedings{cshw-nassp-13,
author = {Dominik Charousset and Thomas C. Schmidt and Raphael Hiesgen and Matthias W{\"a}hlisch},
title = {{Native Actors -- A Scalable Software Platform for Distributed, Heterogeneous Environments}},
booktitle = {Proc. of the 4rd ACM SIGPLAN Conference on Systems, Programming, and Applications (SPLASH '13), Workshop AGERE!},
pages = {87--96},
month = {Oct.},
year = {2013},
publisher = {ACM},
address = {New York, NY, USA}
}
@article{chs-rapc-16,
author = {Dominik Charousset and Raphael Hiesgen and Thomas C. Schmidt},
title = {{Revisiting Actor Programming in C++}},
journal = {Computer Languages, Systems \& Structures},
volume = {45},
year = {2016},
month = "April",
pages = {105--131},
publisher = {Elsevier}
}
You can find the papers online at http://dx.doi.org/10.1145/2541329.2541336 and http://dx.doi.org/10.1016/j.cl.2016.01.002.