C++ Actor Framework — Dev Blog

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

Version 0.18.0-rc.1 Released!

Today, we are more than happy to announce the first pre-release of CAF 0.18!

As outlined in our previous post, this is the first time since the inception of CAF that we raise the required C++ standard version. We took this opportunity to modernize many, many aspects of CAF. This includes the build system, which now requires CMake in version ≥ 3.4. Please take a look at the available build options in CMake directly.

The most notable changes with this release are:

  • The type inspection API received a complete overhaul. Please refer to the updated manual section for the new DSL. One of the upsides of the new inspection API is to enable the configuration framework to pick up user-defined types. So once you provide an inspect overload, you can read your types directly from a CAF configuration. This also enables more formats such as JSON and XML, although we currently ship no default serializers for such formats.
  • All types that the application sends in a CAF message now require a type ID. This is also a breaking change. The API for assigning type IDs is an optional part of the API since version 0.17.5, but became mandatory with this release. The new type IDs require more boilerplate code than before, but they enable improved compile-time checks and faster serialization/deserialization.
  • CAF now ships with an API for runtime metrics that applications can export directly to Prometheus. Have a look at the brand new manual section covering this feature!
  • The library now compiles with default visibility hidden on all platforms and we finally support generating shared libraries on Windows (i.e., building .dll files).

For the full list of changes, please head over to the release notes or take a look at our changelog.

We encourage everyone to try the new release and look forward to any feedback (bug reports in particular). After publishing a pre-release, we no longer make changes to the API except for bugs that we cannot fix otherwise.