Releases: boostorg/mqtt5
Releases · boostorg/mqtt5
v1.0.3 - Pre-Boost Changes
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.
- When using WebSocket connections, users must now explicitly include
async_mqtt5/websocket.hpp
.
- When using WebSocket connections, users must now explicitly include
- Lifted the requirement that all
mqtt_client::async_xxx
completion 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
.
- A basic logger, logger is provided as a LoggerType implementation that logs messages to the
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
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
, andasync_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 theCONNACK
packet:unspecified_error
,server_unavailable
,server_busy
, andconnection_rate_exceeded
. - New behaviour: The
mqtt_client
will attempt to reconnect on any reason code that indicates an error.
- Previous behaviour: The
- Modified handling of buffered
PUBLISH
packets when the broker sets theReceive Maximum
property:- Previous behaviour:
QoS
> 0 packets were queued at the end of the buffer, causingQoS
= 0 PUBLISH packets to be sent first. - New behaviour: Packets now follow the order of
async_publish
calls. However, someQoS
= 0 packets may be transmitted earlier if the Client reaches the Broker'sQoS
> 0 (Receive Maximum
) processing limit.
- Previous behaviour:
- 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 themqtt_client
's default executor will be used instead.
- Previous behaviour: The handler's associated executor would replace
- Fixed an issue preventing
async_publish
from accepting an emptyTopic Name
when aTopic Alias
was provided in thePUBLISH
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
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.