Repository navigation
feat: j2mod, jsmodbus, modbus-esp8266 and modbus4j; contract 1.2 transports - #20
Merged
Merged
Conversation
…sports Four more reference stacks, each with a server and a client: - j2mod 3.4.0 (Java, Apache-2.0): tcp, udp, rtu-over-tcp - jsmodbus 5.0.0 (JavaScript, MIT): tcp, rtu-over-tcp - modbus-esp8266 4.1.1 (C++, BSD-3-Clause): tcp, rtu-over-tcp, the library compiled unmodified for Linux against an Arduino-core layer - modbus4j 3.1.0 (Java, GPL-3.0-or-later): tcp, udp, rtu-over-tcp; built locally from the pinned source, never published (REQUIREMENTS R8.3) Contract 1.2: - --transport tcp|udp|rtu-over-tcp on server and client, and the capability field transports. The five 1.0 adapters and the own image accept tcp only (the own client also udp and rtu-over-tcp). - Features serverIllegalFunction, serverRejectedWriteUnchanged, serverHighestAddress, serverLargestRegisterWrites and clientLargestRegisterWrites, declared by every adapter, for behaviour that a stack of the matrix gets wrong on some transport. Pairings that lack one skip those cases (unsupported), nothing is waived. - tests/transport-cases.tsv and write checks per transport. - The out-of-range FC15/FC16 cases run on a fresh server, and a new value check verifies that a refused write writes nothing. Self-tests, all nine images on linux/arm64: 9453 pass, 0 fail, 5007 unsupported, 0 known differences. Findings with PDUs and specification sections in docs/COMPATIBILITY.md. Also: upstream drift resolvers and matrix rows for the four stacks, the own-stack workflow takes its references from the release's ADAPTERS, longer CI and release time limits, interop_version 0.4.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implementations added
j2modd7861c90f40a7ac219a2dc6987ffa54caa5d47a70d4254d2…jsmodbusfdf02b2600b22519ae4e7465e9bec381a1653172(npm gitHead, untagged)modbusesp299666307a052df52f757f3131e292c2513bb57fmodbus4j3325a2cbce786989156ba7999d6adc2755f7ea5beb20d1fc…Every pin is the latest stable upstream release (
scripts/latest-upstream.pyreportsupdate=nofor all four). Base images are the existing digest pins, plusnode:26.13.0-trixie-slim@sha256:5adad64f…for jsmodbus.modbus-esp8266 in Docker: this works. The library's Modbus sources are compiled unmodified for Linux against a small Arduino-core layer (sockets as Client/Server/Stream) that has no Modbus logic. Four of its documented compile-time settings are changed through an
-includeoverlay; the upstream files are not edited. Seeadapters/modbusesp/README.md.Contract 1.2
--transport tcp|udp|rtu-over-tcponserverandclient, plus the capability fieldtransports. The five 1.0 adapters declaretcponly.tests/known-bugs.tsv.serverIllegalFunctionserverRejectedWriteUnchangedserverHighestAddressaddRegoff-by-one: address 65535 can't be served (§4.4).clientLargestRegisterWrites,serverLargestRegisterWritesScenarios
transport.<udp|rtu-over-tcp>.case.*,.agree.*,.values.*(tests/transport-cases.tsv), andvalues.rejected-write.unchanged.Results
All nine images on linux/arm64,
make documents: 9453 pass, 0 fail, 5007 unsupported, 0 not-tested, 0 known-difference, 0 infra-error. Smoke: 46–58 checks per image, 0 failures.make validate lintis clean.Reproduce:
make images documents.Findings
All findings, with PDUs and spec sections, are in
docs/COMPATIBILITY.md#findingsand each adapter's README. Highlights beyond the table:Docs and policy
interop_version0.4.0.CI
ADAPTERSin the release it tests.Not done here: the release itself (maintainer), and pinning in go-modbus (follows the release).
🤖 Generated with Claude Code