Skip to content

Releases: fa-yoshinobu/plc-comm-hostlink-rust

Release v3.2.1

Choose a tag to compare

@github-actions github-actions released this 29 Jul 06:05
5e7c24f

[3.2.1] - 2026-07-29

  • Release: Bumped crate and lockfile metadata to 3.2.1.
  • Release: GitHub Release drafts now prepend this version's changelog section to generated notes and repair a missing section on workflow reruns.

Changed

  • Library: Removed an unreachable maintainer-only trace-hook implementation and its test-only model types. The hook was crate-private, had no production caller, and was not part of the public API.

Fixed

  • Library: TCP and UDP exchanges now share one checked absolute deadline across write and complete response assembly, so repeated partial data cannot restart the timeout. Timeout values too large to form a runtime deadline are rejected before transport use instead of risking a panic.
  • Library: Direct-bit numeric and bit-in-word operations now preserve complete 16-/32-bit values, sequential typed reads pack direct-bit tokens, and RDS requests split at command limits.
  • Library: Hexadecimal VB parsing preserves the F digit through F9FF, and profile/device catalog upper bounds no longer reject transport sends.

Tests

  • Tests: Added segmented-response deadline, delayed-write, UDP deadline, and oversized-timeout regression coverage.

What's Changed

Full Changelog: v3.2.0...v3.2.1

Release v3.2.0

Choose a tag to compare

@github-actions github-actions released this 16 Jul 18:13
f02563b

v3.2.0 changes

  • Release: Bumped crate and lockfile metadata to 3.2.0.

  • CI: Excluded maintainer-only files, tests, and release tooling from generated source archives while retaining the complete example set, and added source-archive contract checks to local, CI, and release gates.

  • Library: Added immutable client-lifetime traffic snapshots through traffic_stats() on direct and queued clients.

  • Library: Made TCP receive-byte accounting independent of CR/LF segmentation by counting the response body and first terminator only; UDP datagram accounting is unchanged.

Release v3.1.0

Choose a tag to compare

@github-actions github-actions released this 13 Jul 00:12
e74e2f4

v3.1.0 changes

BREAKING

  • Library: Require destination port, transport, and canonical PLC profile when constructing connection options. Constructors remain local-only; commands require an explicit successful open and return HostLinkError::NotConnected instead of opening or reopening a transport.
  • Library: Fix the communication timeout default at 3 seconds, normal command termination at CR, and the internal response-body cap at 65,536 bytes. Public LF and buffer-size controls are removed.
  • Library: Make set_time require an explicit, calendar-valid HostLinkClock; local-time creation remains a separate caller-invoked helper and never falls back to UTC.
  • Library: Change maintainer send_raw to return undecoded response-body bytes without converting PLC error responses. It is hidden from ordinary generated user documentation.
  • Library: Remove comment padding options. Comment decoding removes only trailing ASCII space bytes before UTF-8/Shift_JIS decoding.
  • Library: Require expansion-buffer and low-level numeric formats, reject suffix-bearing low-level device inputs, and validate response tokens, numeric ranges, counts, and 32-bit spans without fallback conversion.
  • Library: Remove all public chunked helpers. Word and native Dword helpers send at most one request and reject counts over their one-request limit.
  • Library: Keep bit-in-word read-modify-write under one client lock so concurrent clones cannot interleave the read and write portions.
  • Library: Remove the embedded PLC manual error-message lookup and retain only the returned PLC code and response.
  • Library: Require UDP response terminators, reject suffixes on every non-format command, validate hexadecimal reads as exactly one 1..4-digit token, and limit clock years to 00..99.
  • Library: Validate command-derived response counts, including 16/32-point direct-bit numeric reads; accept only documented 0/1/ON/OFF direct-bit tokens and close the session after malformed semantic responses.
  • Library: Replace the lossy From<HostLinkValue> for u16 conversion with fallible TryFrom, so non-U16 variants cannot silently become zero.
  • Tests: Add explicit 3-second/zero/TCP-timeout recovery coverage and remove library-local cross-implementation vectors; cross-language verification is a separate repository concern.
  • Tooling: Allow the local release gate to package the reviewed working-tree diff before it is committed.
  • Samples: Require port, transport, and canonical PLC profile in every runnable endpoint definition.

Added

  • Library: Added KvHostLinkPlcProfileDescriptor and crate-root plc_profile_descriptors() for canonical Host Link profile metadata.

Changed

  • Docs: Rebuilt getting-started, usage, API, profile, README, examples, and maintainer migration material around the explicit quality-overhaul contract.

  • Tests: Added coverage for disconnected commands, raw bytes, response caps and expected counts, native Dword requests, calendar validation, comment padding, and concurrent bit-in-word updates.

  • Release: Bumped crate and lockfile metadata to 3.1.0.

Fixed

  • Library: Corrected ten KV device range cells against live PLC hardware and the KEYENCE simulator, and pinned the canonical profile source to plc-comm-hostlink-profiles v1.2.0. VM widens to VM0-9999 on KV-NANO and VM0-59999 on KV-3000/KV-5000; Z widens to Z1-23 on KV-8000. CTH narrows to CTH0-1 on the KV-3000 and KV-5000 XYM profiles, matching their base profiles: CTH2 and CTH3 were previously accepted there and are now rejected.
  • Library: Poison and replace TCP/UDP transports after timeout, I/O failure, or a dropped request future so delayed responses cannot satisfy a later request.
  • Tests: Cover UDP timeout and cancellation with delayed loopback responses.
  • Docs: Remove hand-maintained next-page navigation from Getting Started.

Release integrity

  • The registry package, �3.1.0 tag, and attached assets remain immutable.
  • Main-branch CHANGELOG classification was corrected by PR #27 without changing runtime code, package metadata, the tag, or published artifacts.

v2.0.0

Choose a tag to compare

@fa-yoshinobu fa-yoshinobu released this 06 Jul 08:33
e355b13

v2.0.0

BREAKING

crates.io package renamed and Rust import path changed.

Old crate/use New crate/use
plc-comm-hostlink-rust plc-comm-kv-hostlink
use plc_comm_hostlink::... use plc_comm_kv_hostlink::...

Highlights

  • Version metadata bumped to 2.0.0.
  • Release duplicate checks now target plc-comm-kv-hostlink.
  • README, Getting Started, examples, tests, and docs.rs links use the new crate/import names.

Package matrix: https://fa-yoshinobu.github.io/plc-comm-docs-site/package-matrix/

Release v1.3.0

Choose a tag to compare

@github-actions github-actions released this 05 Jul 15:22

Full Changelog: v1.2.0...v1.3.0

Release v1.2.0

Choose a tag to compare

@fa-yoshinobu fa-yoshinobu released this 05 Jul 10:14

What's Changed

Full Changelog: v1.1.1...v1.2.0

v1.1.1

Choose a tag to compare

@fa-yoshinobu fa-yoshinobu released this 29 Jun 13:38

[1.1.1] - 2026-06-29

Changed

  • Release: Bumped crate metadata to 1.1.1.
  • Docs: Documented explicit Host Link value-format requirements in existing user docs.
  • Samples: Updated the high-level example to use explicit value-format suffixes.

v1.1.0

Choose a tag to compare

@fa-yoshinobu fa-yoshinobu released this 29 Jun 05:23

Changed

  • Release: Bumped crate metadata to 1.1.0.
  • Library: Made Host Link device parsing require explicit device areas and value-format suffixes; numeric-only devices no longer default to R, and suffixless named addresses no longer infer a default format.
  • Library: Removed the unused public resolve_effective_format helper so suffixless devices are not exposed through an implicit-format API.
  • Docs: Refreshed Host Link getting-started, gotchas, supported-register, and usage guidance.
  • Samples: Updated Host Link examples to use safer write/restore patterns.

Fixed

  • Library: Reject malformed embedded device-range segments while building the KV range catalog instead of silently defaulting invalid lower bounds to 0.
  • Library: BIT_IN_WORD now requires an explicit .0 through .F bit index instead of treating a missing bit index as bit 0.

Tests

  • Tests: Added coverage for invalid embedded device-range segment parsing.
  • Tests: Added coverage for rejecting bit-in-word logical addresses without an explicit bit index.
  • Tests: Updated high-level and shared frame-vector coverage for explicit device/value-format requirements.

Release v1.0.0

Choose a tag to compare

@fa-yoshinobu fa-yoshinobu released this 24 Jun 02:51
972ff63

What's Changed

Full Changelog: v0.9.0...v1.0.0

Release v0.9.0

Choose a tag to compare

@fa-yoshinobu fa-yoshinobu released this 20 Jun 15:26
7b84093

What's Changed

Full Changelog: v0.8.0...v0.9.0