All Versions
Latest Version
Avg Release Cycle
14 days
Latest Release

Changelog History
Page 2

  • v0.6.0.2 Changes

    October 22, 2019

    Export MQTTException (thrown from various internal bits).

    โž• Added isConnectedSTM for verifying connection state inside of STM transactions (e.g., verifying you're connected while also waiting for a value in a TChan).

    Also, mqtt-watch reconnects on error now.

  • v0.6.0.1 Changes

    October 18, 2019

    ๐Ÿ˜Œ Relaxed QuickCheck constraint slightly.

    โž• Added connection timeout.

  • v0.6.0.0 Changes

    October 13, 2019

    ๐Ÿš€ Many changes went into this release.

    ๐Ÿ†• New Features

    • ๐Ÿ‘ WebSocket support (ws:// and wss://)
    • โž• Added the mqtt-watch CLI tool (which I use a lot)
    • Lots of work on correctness WRT connection and callback failures.
    • Low-Level callbacks (providing all the details of the published message)
    • โž• Added runMQTTConduit to allow running the client over any Conduit provider.


    As part of adding features and improving correctness, I've made a few API changes.

    • ๐Ÿ‘ป waitForClient now throws an exception on failure. This greatly simplified usage and has made a variety of my applications more reliable when networks and computers fail.
    • Callbacks are now MessageCallback. This primarily allowed me to separate SimpleCallback (the thing most apps want) and LowLevelCallback (a thing I needed when building an MQTT bridge).
    • โœ‚ Removed runClient and runClientTLS from the API. They don't provide any value over connectURI or runMQTTConduit.
    • All callbacks are now asynchronous. Before, QoS2 would be by necessity, but a bad callback could cause problems with the machinery, so they're all independent now. This may not be noticeable in most applications, but it's something to consider.
  • v0.5.1.0 Changes

    September 21, 2019

    The QuickCheck Arbitrary instances are exported in a module now, ๐Ÿ‘ allowing programs to generate useful tests other implementations of ๐Ÿ“ฆ mqtt. I've been using this package to test a C implementation.

    Also, don't allow 3.1.1 to generate a password without a username. That's kind of a weird limitation in the older protocol I'm not sure anyone's run into, but the spec says not to encode things on the wire โœ… that way, so it's useful for interop testing.

  • v0.5.0.2 Changes

    September 15, 2019

    With a few attempts to misuse the library, I found some places where error messages weren't useful enough. There were still two cases where failures turned into indefinite STM errors instead of more informative errors. 1) when the broker declined your connection and 2) when the broker refused your connection. These are errors at differnet layers, so were addressed differently, but should be informative in both cases now.

    Unsubscribe was apparently broken in MQTT 5 as well. I'd never tried to use it, and just happened to notice it wasn't quite right.

  • v0.5.0.1 Changes

    September 14, 2019

    Now with no known issues.

    ๐Ÿš€ was released without consulting the github issues page. There ๐Ÿ›  were two open bugs -- one had already been fixed in the development of 0.5, but another was still present.

    0๏ธโƒฃ named the default subscription options defaultSubOptions, 0๏ธโƒฃ but that's inconsistent with other defaults, so it was renamed to subOptions. This is technically an API incompatibility being introduced and I wouldn't normally do that, but the API's been out for a few hours, so I'm preeptively asking for forgiveness.

  • v0.5.0.0 Changes

    ๐Ÿš€ Major release for MQTT version 5.

    The API is mostly the same, but a list of Property values is passed in and returned from a few different fields.

    Subscribe responses are now more detailed in the error case, and also return a [Property].

    0๏ธโƒฃ Connections default to Protocol311 (3.1.1), and all behavior should be backwards compatible in these cases. i.e., you can write code as if it were destined for a v5 broker, but properties won't be sent and responses will be inferred. If you specify your _protocol as Protocol50 in your MQTTConfig, the new features should all work.

    ๐Ÿ›  Various bugs were fixed along the path of making v5 compatibility, but I'm pretty sure there's one left somewhere.

  • v0.2.4.2 Changes

    Don't set a message ID of 0.

    This had been working fine for a while, but starting in mosquitto 1.6, the server would just hang up on a subscribe request with a message ID of zero.

  • v0.2.4.1 Changes

    ๐Ÿ”— Link QoS2 completion thread on subscriber.

    ๐Ÿ‘ป An exception from a subscriber callback could be silently dropped without completing the handshake which would then cause the MQTT broker to just stop sending messages to the subscriber. Unfortunately, the broker (at least mosquitto) still responds to pings and doesn't give any useful notification that it's no longer sending messages.

  • v0.2.4.0 Changes

    Introduced Filter type alias to distinguish from Topic.

    โฑ Reintroduced timeout management at the protocol layer, dropping a connection when a pong response hasn't come in in a while (~3x longer than the current 30s ping rate). This was mostly after noticing ๐Ÿ‘€ mosquitto do really weird things where it seemed to just forget about all my active connections (other clients figured that out and dropped and reconnected).