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) [] (https://scan.coverity.com/projects/5555) [] (https://waffle.io/actor-framework/actor-framework) [] (https://waffle.io/actor-framework/actor-framework)
- Chat: https://gitter.im/actor-framework/chat
- Homepage: http://www.actor-framework.org
- Developer Blog: http://blog.actor-framework.org
- Doxygen (HTML): http://www.actor-framework.org/doc
- Manual (HTML): http://www.actor-framework.org/manual
- Manual (PDF): http://www.actor-framework.org/pdf/manual.pdf
- Mailing List: https://groups.google.com/d/forum/actor-framework
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 |
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
You can install the latest stable release with:
brew install caf
Alternatively, you can use the development branch by using:
brew install caf --HEAD
The official CAF channel is published under caf_bot/actor-framework and includes the following blocks:
- libcaf_core
- libcaf_io
- libcaf_riac
- libcaf_opencl (depends on OpenCL which is not distributed as part of CAF)
NOTE: You do not need to have CAF installed on your machine. Biicode will automatically do that for you during the build process. Visit this the bii guide for more information.
To use actor-framework in your project, reference the header file as:
#include "caf_bot/actor-framework/libcaf_core/caf/all.hpp"
. Then run
bii find
to resolve and download the files and bii build
to compile your code.
To avoid specifying the block name in your includes add the following to your
bii.conf
file to allow Biicode to associate all #include "caf/*.hpp"
with the actor-framework block:
[includes]
caf/riac/*.hpp : caf_bot/actor-framework/libcaf_riac
caf/opencl/*.hpp : caf_bot/actor-framework/libcaf_opencl
caf/io/*.hpp : caf_bot/actor-framework/libcaf_io
caf/*.hpp : caf_bot/actor-framework/libcaf_core
- git clone https://github.com/actor-framework/actor-framework.git
- cd actor-framework
The easiest way to build CAF is to use the configure
script. Other available
options are using CMake directly or
SNocs.
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]
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
.
A SNocs workspace is provided by GitHub user osblinnikov and documented online.
- CMake
- Pthread (until C++11 compilers support the new
thread_local
keyword)
- GCC >= 4.8
- Clang >= 3.2
- Linux
- Mac OS X
- FreeBSD 10
- Note for MS Windows: CAF relies on C++11 features such as variadic templates and unrestricted unions. We will support Visual Studio as soon as Microsoft's compiler implements all required C++11 features. In the meantime, you can use CAF via MinGW.
If you use CAF in a scientific context, please use the following citation:
@inproceedings{chs-ccafs-14,
author = {Dominik Charousset and Raphael Hiesgen and Thomas C. Schmidt},
title = {{CAF - The C++ Actor Framework for Scalable and Resource-efficient Applications}},
booktitle = {Proc. of the 5th ACM SIGPLAN Conf. on Systems, Programming, and Applications (SPLASH '14), Workshop AGERE!},
month = {Oct.},
year = {2014},
publisher = {ACM},
address = {New York, NY, USA},
location = {Portland, OR},
}
You will find the paper online at http://dx.doi.org/10.1145/2687357.2687363