CAF is an open source framework that offers a programming environment based on the Actor Model of computation combined with a scalable, native runtime environment that lets you build applications at a high level of abstraction without sacrificing performance. Whether you are targeting a single machine, a data center, or the cloud, CAF provides the necessary tools to implement robust, scalable, and maintainable software.
CAF features lightweight & fast actor implementations, data flows, HTTP and WebSocket support, pattern matching for messages, metrics, distributed actors, and more. Professional support, training, and consulting are available from Interance, the company behind CAF.
We do not officially maintain packages for CAF. However, some of our community members made packages available for these package managers:
git clone https://github.com/actor-framework/actor-framework.git cd actor-framework
CAF uses CMake as its build system of choice. To make building CAF more convenient from the command line, we provide a configure
script that wraps the CMake invocation. The script only works on UNIX systems. On Windows, we recommend generating an MSVC project file via CMake for native builds.
configure
Script
The script is a convenient frontend for CMake
. See configure -h
for a list of available options. By default, the script creates a build
directory and asks CMake to generate a Makefile
. A build with default settings generally follows these steps:
./configure cd build make make test [optional] make install [as root, optional]
To generate a Makefile for building CAF with default settings, either use a CMake GUI or perform this step on the command line:
cmake -S <path-to-caf-sources> -B build
After this step, cmake -LH
prints the most useful configuration options for CAF, their default value, and a helptext.
Other CMake projects can add CAF as a dependency by using find_package
and listing the required modules (e.g., core
or net
) . When installing CAF to a non-standard location, set CAF_ROOT
prior to calling find_package
.
openssl
or net
module)C++ is an evolving language. Compiler vendors constantly add more language and standard library features. Since CAF runs on many platforms, this means we need a policy that on the one hand ensures that we only use a widely supported subset of C++ and on the other hand that we naturally progress with the shifting landscape to eventually catch up to more recent C++ additions (in order to not "get stuck").
So instead of singling out individual compiler versions, we build CAF for each commit on all platforms that we currently deem relevant. Everything that passes our CI is "fair game".
Our CI covers Windows (latest MSVC release), macOS (latest Xcode release), FreeBSD (latest) and several Linux distributions (via the Docker images found here). For Linux, we aim to support the current releases (that still receive active support) for the major distributions. Note that we do not build on Linux distributions with rolling releases, because they generally provide more recent build tools than distributions with traditional release schedules and thus would only add redundancy.
Build Documentation Locallycd manual sphinx-build . html
doxygen
command at the root directory of the repository).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.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4