Skip to content

Commit

Permalink
Merge pull request #171 from quartiq/release-0.10
Browse files Browse the repository at this point in the history
release 0.10 prep
  • Loading branch information
jordens authored Jan 27, 2025
2 parents 51ab83b + 6d19482 commit c49afc1
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 11 deletions.
27 changes: 22 additions & 5 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
<!-- markdownlint-disable MD024 -->
# Changelog

This document describes the changes to Minimq between releases.
All notable changes to this project will be documented in this file.

# Unreleased
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.10.0](https://github.com/quartiq/minimq/compare/v0.9.0...v0.10.0) - 2025-01-27

## Changed

* The `Publication::finish()` API was removed in favor of a new `Publication::respond()` API for
constructing replies to previously received messages.
* `DeferredPublication` has been removed: pass a `FnOnce(&mut [u8])` as payload.
Expand All @@ -14,52 +19,58 @@ constructing replies to previously received messages.
# [0.9.0] - 2024-04-29

## Fixed

* Fixed an issue where a corrupted mqtt header length could result in a crash
* [breaking] `embedded-nal` bumped

# [0.8.0] - 2023-11-01

## Changed

* [breaking] Const generics for message size and allowable in-flight messages have been removed.
Instead, the user now supplies an RX buffer, a TX buffer, and a session state buffer.
* Setup-only configuration APIs such as `set_will()` and `set_keepalive_interval()` have been moved
* Setup-only configuration APIs such as `set_will()` and `set_keepalive_interval()` have been moved
to a new `Config` structure that is supplied to the `Minimq::new()` constructor to simplify the
client.
* Added a new `correlate()` API to publication builder to easily add correlation data.


## Added

* Support for subscribing at `QoS::ExactlyOnce`
* Support for downgrading the `QoS` to the maximum permitted by the server
* Brokers may now be provided using domain-name syntax or static IP addresses.

## Fixed

* Fixed an issue where PubComp was serialized with an incorrect control code
* Fixed an issue where some response control packets would be improperly serialized
* The client now respects the server max packet reception


# [0.7.0] - 2023-06-22

## Fixed

* [breaking] Embedded-nal version updated to 0.7
* Fixed an issue where the MQTT client would become permanently inoperable when the broker
disconnected under certain conditions.

# [0.6.2] - 2023-04-05

## Fixed

* `UserProperty` now properly serializes key-then-value. Serialization order was previously
unintentionally inverted.

# [0.6.1] - 2022-11-03

## Fixed

* `PubAck` can now be deserialized when no properties are present, but a reason code is specified.

# [0.6.0] - 2022-11-03

## Added

* Allow configuration of non-default broker port numbers
* Support added for QoS::ExactlyOnce transmission
* `poll()` now supports returning from the closure. An `Option::Some()` will be generated whenever
Expand All @@ -72,6 +83,7 @@ constructing replies to previously received messages.
messages.

## Changed

* [breaking] The client is no longer publicly exposed, and is instead accessible via `Minimq::client()`
* Single MQTT packets are now processed per `Minimq::poll()` execution, reducing stack usage.
* [breaking] External crate is now used for `varint` encoding. Varints changed to u32 format.
Expand All @@ -85,25 +97,29 @@ constructing replies to previously received messages.
the `Publication` builder utility.

## Fixed

* All unacknowledged messages will be guaranteed to be retransmitted upon connection with the
broker.
* The `ReceiveMaximum` property is now sent in the connection request to the broker

# [0.5.3] - 2022-02-14

## Added

* Property comparison now implements PartialEq

# [0.5.2] - 2021-12-14

## Fixed

* Made `mqtt_client` module public to correct documentation
* Partial packet writes no longer cause the connection to the broker to break down.
[#74](https://github.com/quartiq/minimq/issues/74)

# [0.5.1] - 2021-12-07

## Fixed

* Fixed an issue where the keepalive interval could not be set properly. See
[#69](https://github.com/quartiq/minimq/issues/69).
* Fixed an issue where the keepalive interval was not set properly. See
Expand All @@ -112,6 +128,7 @@ broker.
# [0.5.0] - 2021-12-06

## Added

* Support for the `Will` message specification.
* [breaking] Adding `retained` flag to `publish()` to allow messages to be published in a retained
manner.
Expand Down
12 changes: 8 additions & 4 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
[package]
name = "minimq"
version = "0.9.0"
authors = ["Ryan Summers <[email protected]>", "Max Rottenkolber <[email protected]>"]
version = "0.10.0"
authors = [
"Ryan Summers <[email protected]>",
"Max Rottenkolber <[email protected]>",
"Robert Jördens <[email protected]>",
]
edition = "2021"

description = "A minimal MQTT5 client designed for no_std platforms"
Expand All @@ -19,9 +23,9 @@ rust-version = "1.77.0"
bit_field = "0.10.0"
num_enum = { version = "0.7", default-features = false }
heapless = { version = "0.8", features = ["serde"] }
log = {version = "0.4", optional = true}
log = { version = "0.4", optional = true }
embedded-time = "0.12"
varint-rs = {version = "2.2", default-features = false }
varint-rs = { version = "2.2", default-features = false }
serde = { version = "1", features = ["derive"], default-features = false }
smlang = "0.8.0"
embedded-nal = "0.9"
Expand Down
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@

Minimq provides a minimal MQTTv5 client and message parsing for the MQTT version 5 protocol. It
leverages the [`embedded-nal`](https://github.com/rust-embedded-community/embedded-nal) to operate
on top of any TCP stack implementation and is actively used with both
[`smoltcp`](https://github.com/smoltcp-rs/smoltcp) and and the W5500 hardware network stack.
on top of any TCP stack implementation and is actively used with `std-embedded-nal`,
[`smoltcp`](https://github.com/smoltcp-rs/smoltcp), and the W5500 hardware network stack.

Minimq provides a simple, `no_std` interface to connect to an MQTT broker to publish messages and
subscribe to topics.
Expand All @@ -15,6 +15,7 @@ subscribe to topics.

Minimq supports all of the fundamental operations of MQTT, such as message subscription and
publication. Below is a detailed list of features, indicating what aspects are supported:

* Publication at all quality-of-service levels (at-most-once, at-least-once, and exactly-once)
* Retained messages
* Connection will messages
Expand All @@ -31,6 +32,7 @@ Minimq also provides convenient APIs to implement request-response interfaces ov
the `ResponseTopic` and `CorrelationData` properties for in-bound and out-bound messages.

### Smoltcp Support

If using `smoltcp`, check out the [`smoltcp-nal`](https://github.com/quartiq/smoltcp-nal) to quickly
create an interface that can be used by Minimq.

Expand Down

0 comments on commit c49afc1

Please sign in to comment.