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_clientcan 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_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_clientnow 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.mdand 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
CONNACKreason codes received from the Broker.- Previous behaviour: The
mqtt_clientwould only attempt to reconnect to the Broker if it received specific reason codes in theCONNACKpacket:unspecified_error,server_unavailable,server_busy, andconnection_rate_exceeded. - New behaviour: The
mqtt_clientwill attempt to reconnect on any reason code that indicates an error.
- Previous behaviour: The
- Modified handling of buffered
PUBLISHpackets when the broker sets theReceive Maximumproperty:- 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_publishcalls. 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_runcompletion 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_publishfrom accepting an emptyTopic Namewhen aTopic Aliaswas provided in thePUBLISHproperties.
Documentation changes
- Added step-by-step guides for
mqtt_clientusage. - 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.