C++ Actor Framework v0.18.5 Release Notes

Release Date: 2021-07-16 // almost 3 years ago
  • ๐Ÿ›  Fixed

    • 0.18.4 introduced a potential crash when using the OpenSSL module and encountering SSL_ERROR_WANT_READ. The crash manifested if CAF resumed a write operation but failed to fully reset its state. The state management (and consequently the crash) has been fixed.
    • CAF now clears the actor registry before calling the destructors of loaded modules. This fixes undefined behavior that could occur in rare cases where actor cleanup code could run after loaded modules had been destroyed.

Previous changes from v0.18.4

  • โž• Added

    • The new class caf::telemetry::importer::process allows users to get access to process metrics even when not configuring CAF to export metrics to Prometheus via HTTP.

    ๐Ÿ”„ Changed

    • Message views now perform the type-check in their constructor. With this change, the make_* utility functions are no longer mandatory and users may instead simply construct the view directly.

    ๐Ÿ›  Fixed

    • ๐Ÿ–จ Printing a config_value that contains a zero duration timespan now properly prints 0s instead of 1s (#1262). This bug most notably showed up when setting a timespan parameter such as caf.middleman.heartbeat-interval via config file or CLI to 0s and then printing the config parameter, e.g., via --dump-config.
    • ๐Ÿš€ Blocking actors now release their private thread before decrementing the running-actors count to resolve a race condition during system shutdown that could result in the system hanging (#1266).
    • When using the OpenSSL module, CAF could run into a state where the SSL layer wants to read data while CAF is trying to send data. In this case, CAF did not properly back off, causing high CPU load due to spinning and in some scenarios never recovering. This issue has been resolved by properly handling SSL_ERROR_WANT_READ on the transport (#1060).
    • โฑ Scheduled actors now accept default handlers for down messages etc. with non-const apply operator such as lambda expressions declared as mutable.

    โœ‚ Removed

    • โฌ‡๏ธ Dropped three obsolete (and broken) macros in the unit_test.hpp header: CAF_CHECK_FAILED, CAF_CHECK_FAIL and CAF_CHECK_PASSED.