C++ Actor Framework v0.17.5 Release Notes

Release Date: 2020-05-13 // almost 4 years ago
  • ➕ Added

    • In order to allow users to start migrating towards upcoming API changes, CAF
      0.17.5 includes a subset of the CAF 0.18 type_id API. Listing all
      user-defined types between CAF_BEGIN_TYPE_ID_BLOCK and
      CAF_END_TYPE_ID_BLOCK assigns ascending type IDs. Only one syntax for
      CAF_ADD_ATOM exists, since the atom text is still mandatory. Assigning type
      0️⃣ IDs has no immediate effect by default. However, the new function
      actor_system_config::add_message_types accepts an ID block and adds
      ⚙ runtime-type information for all types in the block.
    • In order to opt into the compile-time checks for all message types, users can
      set the CAF_ENABLE_TYPE_ID_CHECKS CMake flag to ON (pass
      🏗 --enable-type-id-checks when using the configure script). Building CAF
      with this option causes compiler errors when sending a type without a type ID.
      This option in conjunction with the new add_message_types function removes a
      common source of bugs: forgetting to call add_message_type<T> for all types
      that can cross the wire.

    🔄 Changed

    • Our manual now uses reStructuredText instead of LaTeX (backport from
      0.18).

    🛠 Fixed

    • 🛠 Fix handling of OS-specific threading dependency in CMake.
    • 🛠 Fix uninstall target when building CAF as CMake subdirectory (backport from
      0.18).
    • Fix potential deadlock with inline_all_enqueues (backport from 0.18).
    • Exceptions while handling requests now trigger error messages (backport from
      0.18).
    • 🛠 Fix build on GCC 7.2
    • 🛠 Fix build error in the OpenSSL module under some MSVC configurations
    • Serializer and deserializer now accept std::chrono::time_point for all clock
      types instead of hard-wiring std::system_clock.
    • In some edge cases, actors failed to shut down properly when hosting a stream
      🛠 source (#1076). The handshake process for a graceful shutdown has been fixed.
    • 🛠 Fixed a compiler error on Clang 10 (#1077).
    • 💻 Setting lists and dictionaries on the command line now properly overrides
      🔧 default values and values from configuration files instead of appending to
      them (#942).
    • Using unquoted strings in command-line arguments inside lists now works as
      expected. For example, --foo=abc,def is now equivalent to
      --foo=["abc", "def"].