Skip to content

refactor(wire): soft-deprecate the pure-Swift wire clients (removed in 2.0.0) - #173

Merged
youtalk merged 1 commit into
mainfrom
deprecate/wire-path-soft
Jul 13, 2026
Merged

refactor(wire): soft-deprecate the pure-Swift wire clients (removed in 2.0.0)#173
youtalk merged 1 commit into
mainfrom
deprecate/wire-path-soft

Conversation

@youtalk

@youtalk youtalk commented Jul 13, 2026

Copy link
Copy Markdown
Owner

Summary

Completion-design §8 — the post-1.3.0-tag deprecation step (§12 PR 4). The pure-Swift wire path is now formally deprecated; removal lands in 2.0.0.

  • ZenohClient.init() / DDSClient.init() carry @available(*, deprecated, message: "The pure-Swift wire path is deprecated; use the RCL backend. Removed in 2.0.0.").
  • The umbrella API is unchanged and NOT deprecated.zenoh(locator:) / .dds(...) route to the RCL backend where available and to the wire path elsewhere (Android; visionOS zenoh; Windows).
  • The public inits stay designated (ZenohClient is non-final; converting its only designated init to a convenience delegate would break external subclass chaining — a 1.x freeze violation). A parallel package init(wireFallback:) is the non-deprecated in-package seam, so makeDefaultSession's automatic fallback and the golden-oracle tests build with zero deprecation warnings.
  • Deprecated-init pin tests (themselves @available(*, deprecated)) assert the public inits keep working through 1.x.
  • README gains the Deprecation section (recommended runtime; what is / is not deprecated; the physically absent vs deprecated nuance per build variant) and the headline/features reflect the two-backend reality; MIGRATION.md gains the 1.2 → 1.3 recipe.

Verification

Full suite green; zero deprecation warnings in the package's own build; swift format lint --strict clean; API gate vs 1.2.0 unchanged (annotations do not register as breakage; only the two pre-allowlisted additive enum cases remain); zenoh-rmw variant carve-out build green.

…n 2.0.0)

Completion-design §8, the post-1.3.0-tag deprecation step: annotate the
wire-specific public entry points — ZenohClient.init() and
DDSClient.init() — with
@available(*, deprecated, "... use the RCL backend. Removed in 2.0.0.").
The umbrella .zenoh(locator:)/.dds(...) API is unchanged and NOT
deprecated: it routes to the RCL backend where available and to the
wire path elsewhere.

Mechanics:
- The public inits stay DESIGNATED (ZenohClient is non-final; turning
  its only designated init into a convenience delegate would break
  external subclass chaining — a 1.x freeze violation). A parallel
  package init(wireFallback:) is the non-deprecated seam for in-package
  callers, so makeDefaultSession's automatic wire fallback and the
  golden-oracle tests build with ZERO deprecation warnings.
- Deprecated-init pin tests (themselves @available(*, deprecated))
  assert the public inits keep constructing working clients through 1.x.
- README gains the Deprecation section (recommended runtime, what is /
  is not deprecated, the physically-absent-vs-deprecated nuance per
  build variant); MIGRATION.md gains the 1.2 -> 1.3 recipe.

API gate vs 1.2.0 unchanged (the annotations do not register as
breakage; only the two pre-allowlisted additive enum cases remain);
full suite, lint, and the zenoh-variant carve-out build all green.

Signed-off-by: Yutaka Kondo <yutaka.kondo@youtalk.jp>
@youtalk
youtalk merged commit babcccc into main Jul 13, 2026
19 checks passed
@youtalk
youtalk deleted the deprecate/wire-path-soft branch July 13, 2026 04:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant