Adds compatibility for 32bit systems.
In issue #17 we found that attempting to run the broker on 32bit systems resulted in invalid memory address errors due to the use of unaligned int64s and the sync.atomic package. This release contains fixes to allow the broker to run correctly on these systems.
With many thanks to @rkennedy:
- Where possible, atomic int64 fields are replaced with uint32 fields.
- New tests to check struct field alignment requirements.
- Fixes a race condition between atomic loads and stores using CompareAndSwap.
- Update tests to match new field types and function signatures.
Another release may be coming in the future to ensure all structs are 8bit aligned and refactored for optimal memory usage.
Checks against 64bit and 32bit builds:
- All unit tests passing.
- Paho interoperability tests passing.
- Inovex MQTT stresser
What's Changed
New Contributors
Full Changelog: v1.0.5...v1.1.0