C++ Actor Framework — Dev Blog

An Open Source implementation of the actor model in C++

Version 0.14 released!

Version 0.14 of CAF has just been released. This release improves several CAF internals, fixes bugs (primarily of type-safe actors), adds an optional ASIO backend, and makes three changes to the API:

  • timed_sync_send has been removed (it offered an alternative way of defining message handlers, which is inconsistent with the rest of the API)
  • the policy classes broadcast, random, and round_robin in actor_pool were removed and replaced by factory functions using the same name
  • all functions that were deprecated with 0.10 were finally removed

We have also refined our policy regarding supporting compilers and improved our testing setup:

  • CAF always required a recent compiler and we are eager to adopt new language features and to catch up with C++14 (and C++17). On the other hand, we are aware that changing the compiler every few months is not acceptable for most users. As a compromise between progressivity and stability, we support versions of GCC and Clang that are up to two years old. Consequently, support for GCC 4.7 has been dropped with 0.14.

  • We are continuously working on increasing the number of distribution channels for CAF. At the moment, we provide a FreeBSD port, a Homebrew package, Biicode integration, and Linux packages via the OpenSuSE build service. You can find a full list with links etc. in the Get CAF Section of the README.

  • We have integrated several tools to constantly improve the code quality of CAF. Each pushed commit to develop is automatically tested via Jenkins on several operating systems and compilers. Our current setup includes:

    • Ubuntu (32 and 64 bit)
    • Fedora 22
    • Mac OS 10.10
    • Mac OS 10.9
    • FreeBSD 10

    Further, we test our code on GCC 4.8, GCC 4.9, GCC 5.1, Clang 3.5, and Clang 3.6. For static code analysis, we use Coverity and cppcheck. These tools are complemented with ASAN and LeakSanitizer.

  • In case you are waiting for MSVC support: we are currently testing on the latest RC from Microsoft. It appears that MSVC is not able to compile advanced match cases and libcaf_io does compile but its unit tests fail. Any feedback or help to get the IO parts working (or all parts of CAF compiling) is welcome. To check on the current progress please visit Issue #302 on GitHub.