Broker 1.4.0
============

- Adds a new ``broker::store_event`` API that can be used to observe
  data store modifications.

- Adds support for Windows platform.

- RocksDB support is now opt-in instead of automatically detected and used
  at configuration-time.  Use the ``--enable-rocksdb`` and
  ``--with-rocksdb=`` flags to opt-in.

Broker 1.3.0
============

- A C++17-capable compiler and CMake 3.0+ are now required to compile Broker

- Broker 1.3.0 depends on CAF 0.17.4.  Broker 1.2.x had depended on CAF 0.16.x,
  whose wire format changed and is now incompatible with CAF 0.17.x.
  Zeek 3.0.x shipped with Broker 1.2.x, which means Broker 1.3.x cannot be
  used to communicate with Zeek 3.0.x, only 3.1.x (and possibly later, check
  for updated release notes for compatibility clarifications).

Broker 1.2.0
============

This release contains breaking API changes (for C++ code, not Python)
in order to increase messaging efficiency via reduction of data
copying.  Specifically:

- ``broker::subscriber::get()`` now returns a different, copy-on-write
  type called ``broker::data_message`` rather than an
  ``std::pair<topic, data>``.  For example this old code::

      auto sub = ep.make_subscriber({"/topic/test"});
      auto msg = sub.get();
      auto& topic = msg.first;
      auto& data = msg.second

  can be changed to::

      auto sub = ep.make_subscriber({"/topic/test"});
      auto msg = sub.get();
      auto& topic = broker::get_topic(msg);
      auto& data = broker::get_data(msg);

- ``broker::endpoint::publish(vector)`` now takes a vector of the new
  ``broker::data_message`` type, not ``std::pair<topic, data>``

- Generally, all type aliases within classes, like
  ``value_type = std::pair<topic, data>``, have been changed to use the
  new ``broker::data_message`` type.

- The semantics of message forwarding have changed slightly: the
  first sender of the message is now the one that applies the initial
  TTL value.  Previously, the first receiver would be the one to
  apply the initial TTL.
