← Back to all sparks
N

NanoMQ

COMMS
Velocity6.3

Lightweight MQTT broker for edge and IoT

An edge MQTT broker hardening for vehicles — and dropping the old embedded arches to do it.

mqttiotedge-brokerbridgingmemory-safetyembedded
Current state
NanoMQ closed out the 0.24 line and moved to 0.25 over roughly five months, shipping through a string of pre-releases before 0.25.3 became the first official 0.25 build. The work splits between memory-safety hardening — fuzzing via OSS-Fuzz and ClusterFuzz is now routine after the maintainer noted production use in robotics and vehicles — and protocol-layer restructuring, with QoS acknowledgement handling moved out of the transport layer and configuration reloading rebuilt lock-free. Release notes are candid to a fault: the maintainer publishes AI-drafted changelogs with attribution and openly says he hasn't made up his mind about the SipHash change.
Where it's heading
The project is trading breadth of hardware support for depth of correctness. 0.25.5 drops official MIPS and ARMel binaries because the build toolchain and MsQuic dependency moved on, while the same release adds hazard-pointer reclamation for hot config reload — a broker chasing safety-critical deployments rather than the widest possible router install base. Bridging is the other consistent thread: nng_bridge, then a nolocal parameter for bridge clients, then the earlier anti-loop work.
Prediction
Expect the 0.25 line to keep tightening QoS and session persistence, and a decision on whether SipHash client ID hashing stays given its CPU cost. Whether dropped architectures return through community builds is not addressed in these entries.

Recent moves

  1. 6d ago

    MIPS and ARMel binaries dropped; lock-free config reload lands

    ⚡ SPARK

    0.25.5 ends official MIPS and ARMel binary releases while adding lock-free ACL reloading and a batch_resend policy for QoS message recovery. It marks the point where NanoMQ stopped stretching to cover legacy embedded hardware and optimized for the deployments it actually serves.

    View source ↗
  2. 26d ago

    First official 0.25 build fixes a last-will memory leak

    The first official 0.25 release, mostly bug fixes but carrying an essential patch for a conn_param object leak that last-will messages triggered in 0.24.14, plus a TLS listener fix that matters under heavy load. Notable as the point the 0.25 line left pre-release status.

    View source ↗
  3. 1mo ago

    Temporary build tagged between 0.25.2 and 0.25.3

    A temporary tagged build with no release notes beyond a sign-off line. Tagging artifacts like this appear regularly in the 0.25 run-up and carry no user-facing change.

    View source ↗
  4. 1mo ago

    Client ID hashing moves from DJBHash to SipHash

    A pre-release enabling preset sessions alongside SQLite persistence, and swapping client ID hashing from DJBHash to SipHash to avoid collisions at the cost of CPU. The maintainer flags the tradeoff as unresolved and asks for feedback, so this change may not survive to a stable release.

    View source ↗
  5. 1mo ago

    Trial pre-release opens the 0.25 line

    A trial pre-release of the 0.25 line whose changelog is dominated by dependency bumps, with a REST API consolidation and a Docker build warning fix. Staging work rather than shipped capability.

    View source ↗
  6. 2mo ago

    nng_bridge links Nanomsg and MQTT without a proxy process

    ⚡ SPARK

    The final 0.24 release added nng_bridge, letting NanoMQ act as a configured bridge between the Nanomsg Next-gen and MQTT ecosystems without a separate proxy process, alongside an offline message cache and memory-safety patches found by fuzzing. It closed the 0.24 line on a capability addition rather than a maintenance note.

    View source ↗