Skip to content

Releases: boostorg/mqtt5

v1.0.3 - Pre-Boost Changes

17 Feb 15:03
Compare
Choose a tag to compare

Version 1.0.3 is the final release of Async.MQTT5. Future versions will be released under the Boost.MQTT5 name, with the boost::mqtt5 namespace and corresponding include paths. The async_mqtt5 namespace and paths will no longer be used in subsequent releases.

This version includes the following changes:

General changes

  • Added Clang 16-18, address, and UB sanitiser builds to CI

Library changes

  • The mqtt_client can now establish IPv6 connections with Brokers.
  • Boost.Beast is an optional dependency and is only required when the Client establishes a connection over WebSocket.
  • Lifted the requirement that all mqtt_client::async_xxxcompletion handlers must be bound to the same executor.
  • Removed thread mutex from async_mutex.
  • Reworked examples to accept command line parameters.
  • Added logging support. The mqtt_client now accepts a third template argument, LoggerType, that can be used to log events within the Client (such as connection failures and disconnections).
    • A basic logger, logger is provided as a LoggerType implementation that logs messages to the stderr.

Documentation changes

  • Implemented documentation changes regarding README.md and the Getting Started chapter.

Full Changelog: v1.0.2...v1.0.3

Pre-Boost Review Release

10 Oct 08:46
Compare
Choose a tag to compare

Version 1.0.2 is the latest release before the scheduled formal Boost review and it includes the following changes:

General changes

  • License changed to Boost Software License 1.0.
  • Extended compiler support to include g++9, g++13 and g++14.

Library changes

  • The library fully complies with Boost.Asio (Boost version 1.86):
    • Added support for default completion tokens.
    • Added support for boost::asio::cancel_at, boost::asio::cancel_after, and partial completion tokens.
    • Added support for immediate executors for async_publish, async_subscribe, and async_unsubscribe.
  • Changed the handling of CONNACK reason codes received from the Broker.
    • Previous behaviour: The mqtt_client would only attempt to reconnect to the Broker if it received specific reason codes in the CONNACK packet: unspecified_error, server_unavailable, server_busy, and connection_rate_exceeded.
    • New behaviour: The mqtt_client will attempt to reconnect on any reason code that indicates an error.
  • Modified handling of buffered PUBLISH packets when the broker sets the Receive Maximum property:
    • Previous behaviour: QoS > 0 packets were queued at the end of the buffer, causing QoS = 0 PUBLISH packets to be sent first.
    • New behaviour: Packets now follow the order of async_publish calls. However, some QoS = 0 packets may be transmitted earlier if the Client reaches the Broker's QoS > 0 (Receive Maximum) processing limit.
  • Changed the treatment of the async_run completion handler's associated executor:
    • Previous behaviour: The handler's associated executor would replace mqtt_client's default executor.
    • New behaviour: The handler’s associated executor will execute internal operations without replacing mqtt_client's default executor. If the handler has no associated executor, then the mqtt_client's default executor will be used instead.
  • Fixed an issue preventing async_publish from accepting an empty Topic Name when a Topic Alias was provided in the PUBLISH properties.

Documentation changes

  • Added step-by-step guides for mqtt_client usage.
  • Provided explanations of key library features such as auto-reconnect and retry mechanisms.
  • Added insights into the client's internal workings.
  • Added numerous ready-to-run code examples.

Full Changelog: v1.0.1...v1.0.2

First stable release

23 Feb 14:04
Compare
Choose a tag to compare

Version 1.0.1 is the first complete, stable, and thoroughly tested release of the Async.MQTT5 library. As of this release, and to the best of our knowledge:

  • it is a complete implementation of the MQTT v5.0 protocol
  • it fully adheres to the principles of the Boost.Asio model for asynchronous operations and standards for writing asynchronous objects.

We'll be happy to receive feedback from the community to refine and enhance the Async.MQTT5 library.