All Projects → actor-framework → Actor Framework

actor-framework / Actor Framework

Licence: bsd-3-clause
An Open Source Implementation of the Actor Model in C++

Programming Languages

C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to Actor Framework

Coerce Rs
Coerce - an asynchronous (async/await) Actor runtime and cluster framework for Rust
Stars: ✭ 231 (-91.24%)
Mutual labels:  async, actor-model, actors
Riker
Easily build efficient, highly concurrent and resilient applications. An Actor Framework for Rust.
Stars: ✭ 745 (-71.75%)
Mutual labels:  async, actor-model, actors
Akka Bootcamp
Self-paced training course to learn Akka.NET fundamentals from scratch
Stars: ✭ 880 (-66.63%)
Mutual labels:  actor-model, actors
Actor4j Core
Actor4j is an actor-oriented Java framework. Useful for building lightweighted microservices (these are the actors themselves or groups of them). Enhanced performance of message passing.
Stars: ✭ 48 (-98.18%)
Mutual labels:  actor-model, actors
Thespian
Python Actor concurrency library
Stars: ✭ 220 (-91.66%)
Mutual labels:  actor-model, actors
Protoactor Go
Proto Actor - Ultra fast distributed actors for Go, C# and Java/Kotlin
Stars: ✭ 3,934 (+49.18%)
Mutual labels:  actor-model, actors
Nact
nact ⇒ node.js + actors ⇒ your services have never been so µ
Stars: ✭ 848 (-67.84%)
Mutual labels:  actor-model, actors
So 5 5
SObjectizer: it's all about in-process message dispatching!
Stars: ✭ 87 (-96.7%)
Mutual labels:  actor-model, actors
transit
Massively real-time city transit streaming application
Stars: ✭ 20 (-99.24%)
Mutual labels:  actors, actor-model
Vlingo Examples
The VLINGO/PLATFORM examples demonstrating features and functionality available in the reactive components.
Stars: ✭ 121 (-95.41%)
Mutual labels:  actor-model, actors
Orbit
Orbit - Virtual actor framework for building distributed systems
Stars: ✭ 1,585 (-39.89%)
Mutual labels:  actor-model, actors
Gosiris
An actor framework for Go
Stars: ✭ 222 (-91.58%)
Mutual labels:  actor-model, actors
Calvin Base
Calvin is an application environment that lets things talk to things, among other things.
Stars: ✭ 282 (-89.31%)
Mutual labels:  actor-model, actors
Mruby Actor
A actor library for distributed mruby
Stars: ✭ 11 (-99.58%)
Mutual labels:  actor-model, actors
reacted
Actor based reactive java framework for microservices in local and distributed environment
Stars: ✭ 17 (-99.36%)
Mutual labels:  actors, actor-model
Actix Remote
Distributed actors for actix framework.
Stars: ✭ 80 (-96.97%)
Mutual labels:  actor-model, actors
Sobjectizer
An implementation of Actor, Publish-Subscribe, and CSP models in one rather small C++ framework. With performance, quality, and stability proved by years in the production.
Stars: ✭ 172 (-93.48%)
Mutual labels:  actor-model, actors
theater
Actor framework for Dart. This package makes it easier to work with isolates, create clusters of isolates.
Stars: ✭ 29 (-98.9%)
Mutual labels:  actors, actor-model
gen browser
Transparent bi-directional communication for clients, servers and more
Stars: ✭ 67 (-97.46%)
Mutual labels:  actors, actor-model
Wasmcloud
wasmCloud is a universal host runtime for actors built with WebAssembly and capability providers
Stars: ✭ 116 (-95.6%)
Mutual labels:  actor-model, actors

CAF: the C++ Actor Framework

CAF is an open source implementation of the actor model for C++ featuring lightweight & fast actor implementations, pattern matching for messages, network transparent messaging, and more.

Gitter Jenkins Documentation Status Language grade: C/C++

Online Resources

Report Bugs / Get Help

Community

Get CAF

We currently officially maintain only the CAF package available on Homebrew.

More package managers are supported by community members:

Get the Sources

git clone https://github.com/actor-framework/actor-framework.git
cd actor-framework

Build CAF from Source

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.

Using the 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]

Using CMake

To generate a Makefile for building CAF with default settings, either use a CMake GUI or perform these steps on the command line:

mkdir build
cd build
cmake ..

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 io) . When installing CAF to a non-standard location, set CAF_ROOT prior to calling find_package.

Dependencies

  • CMake (for building CAF)
  • OpenSSL (only when building the OpenSSL module)

Supported Platforms

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 Locally

  • Building an offline version of the manual requires Sphinx:
    cd manual
    sphinx-build . html
  • Building an offline version of the API reference documentation requires Doxygen (simply run the doxygen command at the root directory of the repository).

Scientific Use

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].