CAF_C++ Actor Framework

An Open Source Implementation
of the Actor Model in C++

Features

A solid software platform.

Lightweight

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.

Distributed

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.

Simple

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.

Adaptive

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.

Lockfree

We provide a mailbox that is unique and lockfree. Only a single CAS operation is necessary for enqueue and dequeue operations. Our mailbox has complexity of O(1) for enqueue operations, while the dequeue operation has an average runtime of O(1).

Components

Tailor CAF to your needs.

Actors in C++

The core components of CAF provide you with all the tools necessary to build concurrent and distributed applications in C++. Experience native actor programming in C++ using our core library.

Github

GPGPU Computing

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.

Github

Debug Your Actors (Soon)

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.

Github

Actors in the IoT (Soon)

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.

Community

Join us as developer or user.

Mailing List

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 actor-framework@googlegroups.com.

GitHub

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.

Developer Blog

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.

Documentation

We believe in a painless start. The user manual of the CAF core library gives detailed background about features and concepts. Full API doc is available as well. For more details we refer to the dedicated wikis on GitHub.

Issue Tracker

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.

Twitter

We spread the word. Follow our news on Twitter. When you tweet about CAF, ensure to include @actor_framework.

Research

If you are writing a paper that refers to the C++ Actor Framework, please cite CAF as follows:

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.

About

Dedicated to actors in C++.

History | continuous development

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.


License | flexible usage in different contexts

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.


Contact | personal questions

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.