Actors in CAF are lightweight, consist of only a few hundred bytes, and are cooperatively managed by a state-of-the-art, work-stealing scheduler. You can spawn literally millions of actors if you want to.
Message passing is network transparent. Actors can talk to each other, no matter where they've been spawned. You do the hard part of implementing your app, CAF is taking care of the low-level side of things.
Sick and tired of cumbersome APIs that make trivial tasks complex? CAF has internalized Alan Kays philosophy: "Simple things should be simple, complex things should be possible." This is our API principle.
CAF allows you to transparently connect actors running on different machines and OSes via the network. It integrates multiple computing devices such as multi-core CPUs, GPGPUs, and even embedded hardware. You can also create message passing interface for your OpenCL backends.
We provide a mailbox that is unique and lockfree. Only a single
CAS operation is necessary for enqueue and dequeue
Our mailbox has complexity of O(1) for enqueue operations, while
the dequeue operation has an average runtime of O(1).
To make use of the power which modern GPU cards have to offer, we provide an OpenCL binding for CAF. Once you've written your OpenCL kernel, CAF creates an actor running it. Ingegrate OpenCL actors into existing apps.Wiki
Debugging and tweaking distributed applications is hard. Even with actors. We are working on an interactive shell that will allow you to track down issues and performance bottlenecks during runtime. Monitoring actors becomes easy. Stay tuned.Wiki
The Internet of Things (IoT) runs on constrained devices with
very low CPU and memory resources (KB instead of GB). We are
working hard to port CAF to embedded platforms, so that your
job becomes easier.
We listen to you. The mailing list is the best place to get in contact with the developer community. Ask your questions or announce your own project that is based on the C++ Actor Framework via email@example.com.
We share our work. CAF is a community project and open source software. We host our source code on GitHub. Checkout the code from https://github.com/actor-framework or download the latest releases of CAF components.
We continuously improve CAF. The developer blog reports in detail about on-going work. It discusses programming features, includes code snippets, and presents latest performance analysis.
We produce good code but accidents happen. Either you found a bug or you want to contribute to CAF by fixing open issues, check the issue tracker.
We spread the word. Follow our news on Twitter. When you tweet about CAF, ensure to include @actor_framework.
If you are writing a paper that refers to the C++ Actor Framework, please cite CAF using one of the following citations:
Dominik Charousset, Thomas C. Schmidt, Raphael Hiesgen, Matthias Wählisch, Native Actors - A Scalable Software Platform for Distributed Heterogeneous Environments, In: Proc. of the 4rd ACM SIGPLAN Conference on Systems Programming and Applications (SPLASH '13) Workshop AGERE!, New York, NY, USA:ACM, Oct. 2013. (BibTeX)
The C++ Actor Framework started with its core library in 2011. During this time, the project was called libcppa. After three years of continuous improvements, not only the community around this C++ Actor library grew but also scenarios in addition to common data center applications (e.g., IoT), and tools to ease Actor development have been supported.
In 2014, we decided for re-branding to reflect the wider scope of this open source software. The new name is C++ Actor Framework, or short CAF.
The C++ Actor Framework is free software. You can redistribute it and/or modify. Software developed by the CAF community is licensed under BSD and the Boost License. Both licenses allow easy redistribution or modification of the software in private, research, and industry deployment.
Many people work on CAF. Public questions regarding the development with or the development for the C++ Actor Framework should be directed to the CAF developer mailing list. For questions related to formal project establishment or collaboration, you can contact Dominik Charousset and Thomas Schmidt.