This
release has new tests for fairness for tag operations. Fairness is
measured to ensure that all tags get a fair amount of time to send
requests and get responses. As part of that, there have been many
changes to the Modbus code.
30+ integration tests are now run on all tier 1 platforms:
- Ubuntu Linux 24.04 on x86, x64, Aarch64, and x64 + the musl C runtime library,
- macOS 14 and 15 on x64 and Aarch64,
- Windows with MSVC on x64, x86, and Aarch64,
- Windows with MinGW on x64 and x86,
- Alpine Linux on X64 and Aarch64 (uses musl C library).
Other builds include:
- Ubuntu/Debian Arm32 v6 and Arm32 v7hf
Other changes:
- Test/experimental packages are available for Ubuntu, Debian, Redhat, and Alpine Linux. These are experimental!
- The included Modbus server code in src/tests/modbus_server has been
completely rewritten to use a new event-based core library that I hope
to use to replace most of the current platform/HAL code over time. This
has been tested extensively with and without Valgrind and ASAN/UBSAN
memory checks.
- By using the new fairness tests, I was able to find a race condition
when aborting a tag while it had an operation in flight that would
result in a double abort and an unexpected error indicating that abort
was not implemented. This is now passing my tests, but it is a race
condition, so please check your own code with this release carefully.
Contributed changes include:
- User Ruben donated a patch set to make it possible to use MinGW to compile for Windows on a Linux host.
- User Ruben donated a patch set to update the recognized CIP data
types to include a few missing ones from the newer releases of
Rockwell's software/firmware.
This is a big enough change that I am doing a prerelease for people
to test with. After letting this "bake" for a while, I will release it
if it looks stable enough.
page to get this.