Repository navigation
Releases: SoundMatt/RELAY
Release list
v2.0.4
v2.0.4 — bug fix; no semantic change
go.mod still declared github.com/SoundMatt/RELAY after the v2.0 MAJOR bump. Per Go's semantic import versioning rules, a v2+ tagged module with a go.mod file must carry a /v2 path suffix, or it becomes uninstallable via ordinary go install/go get tooling (go install .../RELAY/cmd/relay@v2.0.3 failed with invalid version: module contains a go.mod file, so module path must match major version).
Renamed to github.com/SoundMatt/RELAY/v2; updated all 30 internal package imports, README install/usage snippets, and §13.4/13.6/18.1's module-path guidance.
Closes #70 — independently rediscovered by three downstream repos (rust-RCP, rust-MQTT, go-mqtt), all of which had worked around it with a commit-hash pin instead of a normal version tag; they can now move to a standard github.com/SoundMatt/RELAY/v2 v2.0.4 require.
SpecVersion unchanged (2.0); this is a Go-tooling installability fix, not a wire-format or behavioral change.
v2.0.3
Bug fix + doc patch: Router.Run goroutine leak on Subscribe failure (RELAY-15), stale v1.13 version strings (RELAY-01/03), MQTT v5 §15.7.4 doc note (NEW-R-02). Applied from an externally-generated fix-diff register after independent review and verification.
v2.0.2
Doc-correction patch release; no normative spec change (SpecVersion stays 2.0).
- The
rcp.ToMessagedoc comment overclaimed lossless round-trip for all Control bits; softened to state exactly which fields round-trip (this predates v2.0.1 and survived it unchanged). - Strengthened
TestMessageToMessageErrorto assert the fullControlvalue, so the documented gap stays visible.
Fixes #155 (NEW-R-01, from a 2026-07-30 follow-up re-audit).
v2.0.1
Bug fix + doc correction release; no normative spec change (SpecVersion stays 2.0).
rcp.ToMessage/FromMessagenow carryTransactionNum/ReadSizeOrSegmentthroughMeta, closing a gap against §15.7's pre-existing "MUST be lossless for all mandatory fields" rule.- §15.7.5 documents the new mapping and
ToMessage's always-both-keys behavior. - Golden vector
spec/vectors/rcp-message.jsonnow exercises the previously-dropped fields. - Fixed stale pre-v2.0 RCP references in README.md and the
rcppackage doc comment.
v2.0.0 — RCP TC18 canonical types (BREAKING)
MAJOR breaking change per §19.3's stability guarantee — canonical types (§15.5) are covered by that contract.
RCP now means the real OPEN Alliance TC18 Remote Control Protocol Specification v0.5.1_RC, not the earlier RELAY-internal placeholder protocol (Zone/Command/Response/Status/Priority/CommandType). No compatibility shim.
Designed against go-RCP, which reached full TC18 conformance cutover (v1.0.0) and explicitly disclosed that RELAY's own RCP schemas/golden vector were stale. See spec/CHANGELOG.md for the full technical breakdown.
v1.14.0
Expands §13.7.2's module-name registry with canonical names for the new RCP protocol-core concerns (avtp, acf, lifecycle, regmap, discovery, request, fragment) and DDS's already-converged RTPS internals (cdr, spdp, sedp, reliable, persist, transport, guid, locator, wildcard). REQ-RELAY-093. See CHANGELOG for the naming-drift findings that prompted this.
v1.13.0
Deep-audit fix pass — two live CLI conformance-gate bugs, several tooling correctness fixes, and C++/Rust language-binding parity.
P0 bugs fixed
relay interopwith zero binaries silently PASSed / exit 0 instead of the spec-mandated exit 2relay conform --strictplaced after the binary path was silently dropped instead of applied (same failure class as v1.11.1's--format jsonbug)cmd/relay'stoolVersionhad drifted behindSpecVersionagain — bumped, now guarded by a test so it can't silently recur
P1 fixes
- Golden error vectors (
spec/vectors/errors/*.json) were unreachable through thego:embed-based API —relay interopcould never exercise reject-path behavior, only the happy path relay crossbar: correct per-destination converter inference, a genuinely persistent send-sink process (was one subprocess per message, contradicting spec §11.2's streaming contract), back-pressure-honoring subscriberouter.Router.AddSpoke/AddRoutenow properly synchronized (was a real data race)- SOME/IP
FromMessagenow wraps the spec-mandatedErrMalformedMessagesentinel - §17 corrected to accurately state what
relay conform(a black-box CLI tool) can and can't verify - §18.2/§18.3: added missing C++/Rust
HealthProvider/MetricsProvider/Drainerbindings andSubscriberOptionsrouting-key fields
P2s
relay convert stdin size cap, relay trace orphaned-child-process fix, a duplicate differently-cased BackPressurePolicy removed, stale Dockerfile labels, README/ROADMAP/spec-title currency — with durable drift-guard tests added given staleness recurred across three releases running.
Process
RELAY's own CI now runs relay conform/relay interop against itself for the first time — spec §20.1 requires both of a conformant implementation.
SpecVersion = "1.13" — additive, non-breaking.
Full diff: v1.12.0...v1.13.0
v1.12.0
Add "c" as a valid CLI language value (§12.1) — spec/schemas/cli-version.json, the §13.5 Docker label pattern, and spec/version.json all updated. Corrects REQ-RELAY-047/053, which had gone stale (still said go/cpp/rust only).
Surfaced by a deep audit of c-RCP: it had to misreport itself as "cpp" just to pass relay conform --strict's schema validation, since plain C was never a valid enum value. Additive MINOR — no existing go/cpp/rust implementation is affected.
Full diff: v1.11.1...v1.12.0
v1.11.1
Bug fix + documentation currency release. No normative spec change (SpecVersion stays 1.11).
Fixes:
- P0:
relay conform --format jsonalways exited 0, even on FAIL, defeating the §20.1 CI conformance gate for any pipeline gating on JSON output. Bothtextandjsonformats now hit the same exit-code check. Added a regression test. cmd/relay'stoolVersionbumped from a stale hardcoded0.1.0to1.11.1.- README: corrected stale "v0.1 (draft)" status, added missing
go install .../cmd/relay@latestinstructions, documented all 16 CLI subcommands (was 2). - ROADMAP.md: fixed stale "in progress" tags on shipped v0.1–v0.4 milestones.
- spec/relay-spec.md Appendix A: relabeled as an explicit historical snapshot (frozen at v0.2, 2026-06-16) instead of presenting stale data as current.
Closes #50 #51 #52 #53 #54 #55 #56.
Full diff: v1.11.0...v1.11.1
v1.11.0 — Remove C++ CLI waiver
§17.7: removes the waiver that let a CLI-less C++ library have its CLI requirements assessed as "not applicable". Every conformant implementation MUST now ship the version/capabilities/status CLI (C++ via -DRELAY_BUILD_CLI=ON). Reconciles §17 with §20 (which gates CI on relay conform --strict against the built CLI). No currently-conformant impl relied on the waiver — affects only CLI-less scaffolds. SpecVersion 1.11.