Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

release 0.10 prep #171

Merged
merged 1 commit into from
Jan 27, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading