[{"data":1,"prerenderedAt":30},["Reactive",2],{"9CjX7RyquN":3,"kiOnnmWMNR":27},{"items":4,"meta":23},[5,8,11,14,17,20],{"title":6,"titleUrl":7},"MQTT in Python with Paho Client: Beginner's Guide 2026","how-to-use-mqtt-in-python",{"title":9,"titleUrl":10},"MQTT QoS 0, 1, 2 Explained: A Quickstart Guide","introduction-to-mqtt-qos",{"title":12,"titleUrl":13},"MQTT Broker: How It Works, Popular Options, and Quickstart","the-ultimate-guide-to-mqtt-broker-comparison",{"title":15,"titleUrl":16},"CAN Bus Uncovered: Basics and Applications in Vehicles","can-bus-how-it-works-pros-and-cons",{"title":18,"titleUrl":19},"MQTT on ESP32: A Beginner's Guide","esp32-connects-to-the-free-public-mqtt-broker",{"title":21,"titleUrl":22},"MQTT Topics and Wildcards: A Beginner's Guide","advanced-features-of-mqtt-topics",{"count":24,"limit":25,"page":26},6,7,1,{"changelog":28,"createAt":29},"\u003Cp>NanoMQ 0.24.13 is out. This is the last formal version of 0.24. Since NanoMQ has been widely used in production robotics and vehicles, We are focusing on safety &amp; security hardening, introducing openFuzz &amp; ClusterFuzz to routine workflow.\u003C/p>\n\u003Cp>Following is the full release blog written by Gemini. I am honest, will not take AI' work ^_^\u003C/p>\n\u003Cp>Hello community! NanoMQ 0.24.13 is officially released! 🎉\u003C/p>\n\u003Cp>This update (including the underlying NanoNNG library) brings the highly anticipated MQTT bridge anti-loop feature (supporting Mosquitto's try_private mechanism). It also includes significant enhancements and bug fixes regarding security (introducing Fuzzing tests), core protocol stack stability, and memory safety.\u003C/p>\n\u003Cp>Here are the detailed release notes:\u003C/p>\n\u003Cp>🌟 Highlights\u003C/p>\n\u003Col>\n\u003Cli>New MQTT v3.1.1 Bridge Anti-Loop Option (no_local_v4)\nWhen bridging NanoMQ with brokers like Mosquitto, message loop (echo) issues can frequently occur. In this release, we introduced the no_local_v4 (equivalent to Mosquitto's try_private) option in the bridge configuration.\u003C/li>\n\u003C/ol>\n\u003Cp>How it works: When this configuration is enabled, NanoMQ will set the highest bit (Bridge Bit) of the protocol version number to 1 in the MQTT v3.1.1 CONNECT packet (sending 0x84 instead of the standard 0x04). This allows the remote broker to recognize it as a bridge connection and cooperate using native No Local mechanisms to prevent message loops.\u003C/p>\n\u003Cp>Use case: Greatly simplifies routing configurations when integrating NanoMQ with third-party legacy MQTT brokers, effectively avoiding broadcast storms.\u003C/p>\n\u003Col>\n\u003Cli>Comprehensive Security Upgrades &amp; Fuzzing Tests\nTo build a rock-solid edge messaging bus, we have significantly enhanced our security and automated fuzzing capabilities:\u003C/li>\n\u003C/ol>\n\u003Cp>OSS-Fuzz &amp; ClusterFuzzLite Integration: Introduced advanced Fuzzing support, specifically adding a Fuzzer for MQTT PUBLISH packets to proactively discover potential memory and parsing vulnerabilities.\u003C/p>\n\u003Cp>Clarified NanoMQ's CVE vulnerability reporting policy and guidelines (Updated SECURITY.md).\u003C/p>\n\u003Cp>🐛 Bug Fixes &amp; Stability Improvements\nWe addressed several critical issues reported by the community in this iteration, covering topic routing, protocol parsing, and underlying network scheduling:\u003C/p>\n\u003Cp>Protocol &amp; Routing:\u003C/p>\n\u003Cp>Topic Alias: Fixed two protocol violations in MQTT topic alias handling.\u003C/p>\n\u003Cp>Will Message: Fixed an issue where encoding Will messages failed for MQTT V5.\u003C/p>\n\u003Cp>Retain Message: Fixed the missing pipe_id in retain messages, and a bug where the retain flag was not properly reset for MQTT V3.1/V3.1.1.\u003C/p>\n\u003Cp>Special Topic Subscriptions: Fixed the routing search logic for system/reserved topics starting with $.\u003C/p>\n\u003Cp>Underlying Network &amp; Session State (NanoNNG):\u003C/p>\n\u003Cp>Fixed a send AIO error on macOS caused by handling no_local messages.\u003C/p>\n\u003Cp>Fixed an abnormal keepalive mechanism in the underlying nmq_mqtt client.\u003C/p>\n\u003Cp>Fixed regression bugs caused by context loss from AI-assisted coding.\u003C/p>\n\u003Cp>Fixed a potential message stall issue caused by underlying packet accumulation.\u003C/p>\n\u003Cp>Fixed nng action execution exceptions on the Windows platform.\u003C/p>\n\u003Cp>Memory &amp; Database:\u003C/p>\n\u003Cp>Fixed an out-of-bounds read vulnerability in mqtt_parser, and optimized/consolidated the get_utf8_str parsing performance.\u003C/p>\n\u003Cp>Fixed a bug in the SQLite QoS database where unused message entities were not properly removed.\u003C/p>\n\u003Cp>⚙️ Build, Dependencies &amp; CI/CD Updates\nUpgraded numerous GitHub Actions dependencies via Dependabot (including docker/build-push-action, actions/setup-node, codecov, etc.) to improve pipeline security and build speed.\u003C/p>\n\u003Cp>Bumped the internal JWT authentication library l8w8jwt.\u003C/p>\n\u003Cp>Introduced unit tests automatically generated by CodeRabbit AI to further improve code coverage.\u003C/p>\n\u003Cp>Added a regression validation script for Issue #2246 in integration tests.\u003C/p>\n\u003Cp>👏 Thank You to Our Contributors!\nThe progress of open-source projects relies on the dedication of every community member. A special thank you to the developers making their first code contributions to this release:\u003C/p>\n\u003Cp>@saberrg (for adding OSS-Fuzz integration and the PUBLISH fuzzer)\u003C/p>\n\u003Cp>@tricera-josua-palmstedt (for adding the try_private option to control connection bridge bits in NanoNNG)\u003C/p>\n\u003Cp>Full change commit log:\u003C/p>\n\u003Ch2>What's Changed in NanoMQ\u003C/h2>\n\u003Cul>\n\u003Cli>Update SECURITY.md with CVE policy and guidelines by @JaylinYu in \u003Ca href=\"https://github.com/nanomq/nanomq/pull/2249\">https://github.com/nanomq/nanomq/pull/2249\u003C/a>\u003C/li>\n\u003Cli>Bump docker/build-push-action from 6.18.0 to 6.19.2 by @dependabot[bot] in \u003Ca href=\"https://github.com/nanomq/nanomq/pull/2237\">https://github.com/nanomq/nanomq/pull/2237\u003C/a>\u003C/li>\n\u003Cli>Fix missing pipe_id in retain message by @alvin1221 in \u003Ca href=\"https://github.com/nanomq/nanomq/pull/2257\">https://github.com/nanomq/nanomq/pull/2257\u003C/a>\u003C/li>\n\u003Cli>Add test script for issue #2246 to integration tests. by @xinyi-xs in \u003Ca href=\"https://github.com/nanomq/nanomq/pull/2254\">https://github.com/nanomq/nanomq/pull/2254\u003C/a>\u003C/li>\n\u003Cli>Bump docker/metadata-action from 5.10.0 to 6.0.0 by @dependabot[bot] in \u003Ca href=\"https://github.com/nanomq/nanomq/pull/2262\">https://github.com/nanomq/nanomq/pull/2262\u003C/a>\u003C/li>\n\u003Cli>Bump docker/setup-buildx-action from 3.12.0 to 4.0.0 by @dependabot[bot] in \u003Ca href=\"https://github.com/nanomq/nanomq/pull/2265\">https://github.com/nanomq/nanomq/pull/2265\u003C/a>\u003C/li>\n\u003Cli>Fix failed to encode Will msg for MQTT V5 by @alvin1221 in \u003Ca href=\"https://github.com/nanomq/nanomq/pull/2261\">https://github.com/nanomq/nanomq/pull/2261\u003C/a>\u003C/li>\n\u003Cli>Bump extern/l8w8jwt from \u003Ccode>d7f5b3b\u003C/code> to \u003Ccode>ee445f6\u003C/code> by @dependabot[bot] in \u003Ca href=\"https://github.com/nanomq/nanomq/pull/2240\">https://github.com/nanomq/nanomq/pull/2240\u003C/a>\u003C/li>\n\u003Cli>fix 2 protocol violation in mqtt topic alias by @JaylinYu in \u003Ca href=\"https://github.com/nanomq/nanomq/pull/2269\">https://github.com/nanomq/nanomq/pull/2269\u003C/a>\u003C/li>\n\u003Cli>\u003Cul>\n\u003Cli>NEW [test] add OSS-Fuzz integration and MQTT PUBLISH fuzzer by @saberrg in \u003Ca href=\"https://github.com/nanomq/nanomq/pull/2238\">https://github.com/nanomq/nanomq/pull/2238\u003C/a>\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003Cli>CMakelist fix for new JWT update &amp; fix regression bug from AI coding by @JaylinYu in \u003Ca href=\"https://github.com/nanomq/nanomq/pull/2278\">https://github.com/nanomq/nanomq/pull/2278\u003C/a>\u003C/li>\n\u003Cli>Bump pnpm/action-setup from 4.2.0 to 5.0.0 by @dependabot[bot] in \u003Ca href=\"https://github.com/nanomq/nanomq/pull/2273\">https://github.com/nanomq/nanomq/pull/2273\u003C/a>\u003C/li>\n\u003Cli>Bump codecov/codecov-action from 5.5.2 to 6.0.0 by @dependabot[bot] in \u003Ca href=\"https://github.com/nanomq/nanomq/pull/2275\">https://github.com/nanomq/nanomq/pull/2275\u003C/a>\u003C/li>\n\u003Cli>Bump actions/upload-artifact from 6.0.0 to 7.0.0 by @dependabot[bot] in \u003Ca href=\"https://github.com/nanomq/nanomq/pull/2277\">https://github.com/nanomq/nanomq/pull/2277\u003C/a>\u003C/li>\n\u003Cli>Bump actions/setup-node from 6.2.0 to 6.3.0 by @dependabot[bot] in \u003Ca href=\"https://github.com/nanomq/nanomq/pull/2276\">https://github.com/nanomq/nanomq/pull/2276\u003C/a>\u003C/li>\n\u003Cli>Bump docker/login-action from 3.7.0 to 4.1.0 by @dependabot[bot] in \u003Ca href=\"https://github.com/nanomq/nanomq/pull/2274\">https://github.com/nanomq/nanomq/pull/2274\u003C/a>\u003C/li>\n\u003Cli>FIx #2270 &amp; New release is ready by @JaylinYu in \u003Ca href=\"https://github.com/nanomq/nanomq/pull/2280\">https://github.com/nanomq/nanomq/pull/2280\u003C/a>\u003C/li>\n\u003Cli>ci: rename action by @Rory-Z in \u003Ca href=\"https://github.com/nanomq/nanomq/pull/2282\">https://github.com/nanomq/nanomq/pull/2282\u003C/a>\u003C/li>\n\u003Cli>Add ClusterFuzzLite support. by @xinyi-xs in \u003Ca href=\"https://github.com/nanomq/nanomq/pull/2186\">https://github.com/nanomq/nanomq/pull/2186\u003C/a>\u003C/li>\n\u003Cli>add new no_local_v4. by @JaylinYu in \u003Ca href=\"https://github.com/nanomq/nanomq/pull/2290\">https://github.com/nanomq/nanomq/pull/2290\u003C/a>\u003C/li>\n\u003Cli>same PR with #2289 by @JaylinYu in \u003Ca href=\"https://github.com/nanomq/nanomq/pull/2292\">https://github.com/nanomq/nanomq/pull/2292\u003C/a>\u003C/li>\n\u003Cli>new 0.24.13 release by @JaylinYu in \u003Ca href=\"https://github.com/nanomq/nanomq/pull/2293\">https://github.com/nanomq/nanomq/pull/2293\u003C/a>\u003C/li>\n\u003C/ul>\n\u003Ch2>New Contributors\u003C/h2>\n\u003Cul>\n\u003Cli>@saberrg made their first contribution in \u003Ca href=\"https://github.com/nanomq/nanomq/pull/2238\">https://github.com/nanomq/nanomq/pull/2238\u003C/a>\u003C/li>\n\u003C/ul>\n\u003Cp>\u003Cstrong>Full Changelog\u003C/strong>: \u003Ca href=\"https://github.com/nanomq/nanomq/compare/0.24.11...0.24.13\">https://github.com/nanomq/nanomq/compare/0.24.11...0.24.13\u003C/a>\u003C/p>\n\u003Ch2>What's Changed in NanoNNG\u003C/h2>\n\u003Cul>\n\u003Cli>fix reset retain flag for MQTT V3.1/V3.1.1 by @alvin1221 in \u003Ca href=\"https://github.com/nanomq/NanoNNG/pull/1466\">https://github.com/nanomq/NanoNNG/pull/1466\u003C/a>\u003C/li>\n\u003Cli>\u003Cul>\n\u003Cli>FIX [mqtt_qos_db(\u003Ccode>SQLITE\u003C/code>)] fix remove unused msg entity by @alvin1221 in \u003Ca href=\"https://github.com/nanomq/NanoNNG/pull/1465\">https://github.com/nanomq/NanoNNG/pull/1465\u003C/a>\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003Cli>\u003Cul>\n\u003Cli>FIX [nmq_mqtt] fix keepalive mechanism by @alvin1221 in \u003Ca href=\"https://github.com/nanomq/NanoNNG/pull/1463\">https://github.com/nanomq/NanoNNG/pull/1463\u003C/a>\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003Cli>Fix handle no_local msg on MacOS cause send aio error by @alvin1221 in \u003Ca href=\"https://github.com/nanomq/NanoNNG/pull/1470\">https://github.com/nanomq/NanoNNG/pull/1470\u003C/a>\u003C/li>\n\u003Cli>Add encoding method for publish message by @alvin1221 in \u003Ca href=\"https://github.com/nanomq/NanoNNG/pull/1471\">https://github.com/nanomq/NanoNNG/pull/1471\u003C/a>\u003C/li>\n\u003Cli>Fix searching logic for topics starting with '$' by @alvin1221 in \u003Ca href=\"https://github.com/nanomq/NanoNNG/pull/1473\">https://github.com/nanomq/NanoNNG/pull/1473\u003C/a>\u003C/li>\n\u003Cli>avoid msg stall by @JaylinYu in \u003Ca href=\"https://github.com/nanomq/NanoNNG/pull/1477\">https://github.com/nanomq/NanoNNG/pull/1477\u003C/a>\u003C/li>\n\u003Cli>\u003Cul>\n\u003Cli>FIX [mqtt_parser] out of bounds read by @JaylinYu in \u003Ca href=\"https://github.com/nanomq/NanoNNG/pull/1480\">https://github.com/nanomq/NanoNNG/pull/1480\u003C/a>\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003Cli>\u003Cul>\n\u003Cli>MDF [mqtt_parser] optimize &amp; consolidate get_utf8_str by @JaylinYu in \u003Ca href=\"https://github.com/nanomq/NanoNNG/pull/1485\">https://github.com/nanomq/NanoNNG/pull/1485\u003C/a>\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003Cli>fix regression bug from AI by @JaylinYu in \u003Ca href=\"https://github.com/nanomq/NanoNNG/pull/1486\">https://github.com/nanomq/NanoNNG/pull/1486\u003C/a>\u003C/li>\n\u003Cli>Fix: Add try_private option to control connection bridge bit by @tricera-josua-palmstedt in \u003Ca href=\"https://github.com/nanomq/NanoNNG/pull/1469\">https://github.com/nanomq/NanoNNG/pull/1469\u003C/a>\u003C/li>\n\u003Cli>\u003Cul>\n\u003Cli>MDF [utils] fix nng action on windows by @JaylinYu in \u003Ca href=\"https://github.com/nanomq/NanoNNG/pull/1492\">https://github.com/nanomq/NanoNNG/pull/1492\u003C/a>\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003Cli>Add no_local_v4 config param by @JaylinYu in \u003Ca href=\"https://github.com/nanomq/NanoNNG/pull/1493\">https://github.com/nanomq/NanoNNG/pull/1493\u003C/a>\u003C/li>\n\u003Cli>Fix expected protocol version in unit tests by @alvin1221 in \u003Ca href=\"https://github.com/nanomq/NanoNNG/pull/1494\">https://github.com/nanomq/NanoNNG/pull/1494\u003C/a>\u003C/li>\n\u003Cli>CodeRabbit Generated Unit Tests: Add generated unit tests by @coderabbitai[bot] in \u003Ca href=\"https://github.com/nanomq/NanoNNG/pull/1447\">https://github.com/nanomq/NanoNNG/pull/1447\u003C/a>\u003C/li>\n\u003Cli>sync changes by @JaylinYu in \u003Ca href=\"https://github.com/nanomq/NanoNNG/pull/1496\">https://github.com/nanomq/NanoNNG/pull/1496\u003C/a>\u003C/li>\n\u003C/ul>\n\u003Ch2>New Contributors\u003C/h2>\n\u003Cul>\n\u003Cli>@tricera-josua-palmstedt made their first contribution in \u003Ca href=\"https://github.com/nanomq/NanoNNG/pull/1469\">https://github.com/nanomq/NanoNNG/pull/1469\u003C/a>\u003C/li>\n\u003C/ul>\n\u003Cp>\u003Cstrong>Full Changelog\u003C/strong>: \u003Ca href=\"https://github.com/nanomq/NanoNNG/compare/0.24.11...0.24.13\">https://github.com/nanomq/NanoNNG/compare/0.24.11...0.24.13\u003C/a>\u003C/p>\n","2026-04-21",1779678535467]