CAF
The C++ Actor Framework

 

In a Nutshell

CAF offers a high-level programming environment based on the Actor Model of computation combined with an efficient, native runtime environment that lets you build scalable applications. For example, software for molecular research, communication backends for distributed network security monitoring or even massive multiplayer online games.

The framework is open source, available on GitHub under the 3-Clause BSD License, and in active development since 2011.

 

Overview GitHub

Learning Resources

Support & Training

 
 

Scalable Abstractions

Network-transparent messaging combined with a shared nothing architecture enables actors to run concurrently without risking data races. Once applications outgrow a single machine, CAF enables users to scale out seamlessly by distributing actors across the network.

Actors naturally thrive in an ever-changing environment and scale horizontally just as easily as vertically. This makes actors the perfect fit for building applications that grow and shrink dynamically with user demand.

Native Execution

Leveraging C++ enables us to tightly control memory layout as well as actor scheduling. As a result, CAF actors consist of only a few hundred bytes and the messaging layer reclaims memory as soon as possible.

Whether building large-scale applications that live in the cloud, or IoT application that run on resource-constrained devices, CAF users can rely on a low memory footprint and fast execution thanks to a minimal runtime overhead.

Resilient Design

Distributed systems have many sources of errors. Writing software for the real world means to anticipate partial failures and to gracefully respond to hardware, software and network errors. CAF cannot make crashes and bugs go away, but it equips you with the tools to manage them.

Actor-based design organizes applications into sub-systems with failover strategies that allow forming supervision trees. These techniques proved themselves in practice time and time again for building reliable, fault tolerant systems.

 

Community

GitHub

Our main repository at github.com/actor-framework/actor-framework is where the CAF community comes together to collaborate on the project.

Whether you found a bug, have an idea for an improvement, want to submit patches, or simply want to stay up-to-date with ongoing developments: we are always looking forward to welcome new developers!

Twitter

Never miss a release or other important updates by following @actor_framework on Twitter! Likes and retweets that help us spread the word are much appreciated!

Our Twitter handle is managed directly by the maintainers of the open source project, so Twitter is also a great place to get in touch with the people behind the framework.

Messaging

Come and say hi on gitter.im/actor-framework! Our chat room is a great place to get in touch with other CAF users and to ask quick questions.

Becoming a member of our user mailing list at actor-framework@googlegroups.com connects you to CAF users around the world for sharing your thoughts, asking questions and participating in online discussions surrounding CAF.

Research

Many years of research at the INET working group of the Hamburg University of Applied Sciences guided the development of CAF. When using CAF in a scientific context, please cite one of our primary publications.

The INET working group is always open for joint research projects or other forms of collaborations. Please contact Thomas C. Schmidt for questions related to formal project establishment.

Our Users Include

Getting Started

Examples

The examples folder in the main repository contains many small applications showcasing selected features of the framework. Of course, the folder also contains the obligatory Hello World.

We strongly recommend looking at the message passing examples first to get an initial feeling for the framework. Afterwards, the remoting examples will help you to distribute your CAF applications.

Documentation

The user manual discusses CAF feature by feature and highlights selected components such as the scheduler. The introduction chapter also explains terminology and concepts we use throughout all of our resources.

Complementary to the user manual, our Doxygen documentation contains details on all public API classes and functions.

 

Support

Are you considering CAF for your next software project? Get professional support directly from the creators and maintainers of CAF at interance.io!

We offer a variety of services to help you get the most out of CAF. Including support contracts, consulting, and training.