Skip to content

chore(release): 1.3.0 — pin xcframework URLs + RCL-by-default on Apple - #174

Merged
youtalk merged 2 commits into
mainfrom
release/1.3.0-pin
Jul 13, 2026
Merged

chore(release): 1.3.0 — pin xcframework URLs + RCL-by-default on Apple#174
youtalk merged 2 commits into
mainfrom
release/1.3.0-pin

Conversation

@youtalk

@youtalk youtalk commented Jul 13, 2026

Copy link
Copy Markdown
Owner

Summary

Completion-design §6 — the post-tag pin PR for 1.3.0 (all 8 release assets published; 8-asset guard green).

  • releaseBaseURL 1.2.0 → 1.3.0; CZenohPico / CCycloneDDS checksums recomputed from the re-zipped 1.3.0 assets (swift package compute-checksum on the downloaded zips).
  • CRos2Jazzy / CRos2JazzyZenoh: local-path → URL+checksum binaryTargets. The Apple binary target is now named per variant so the zip's .xcframework basename matches the target name SwiftPM resolves (nothing imports the module from Swift — link-graph-only). Verified live: a plain Apple build downloads + links CRos2Jazzy.xcframework.zip (29 MB); the zenoh variant resolves CRos2JazzyZenoh.xcframework.zip (48 MB).
  • SWIFT_ROS2_ENABLE_RCL packaging gate removed on Apple (MZ2 "Replace on Apple"): a plain swift build gets the RCL backend and plain swift test now executes SwiftROS2RCLTests. Escape hatches: SWIFT_ROS2_DISABLE_RCL=1 (wire-only graph, no download) and SWIFT_ROS2_RCL_LOCAL=1 (resolve build/ros2*/ — ci-rcl's macOS legs set it so they keep testing the HEAD-built artifact). Linux stays opt-in via SWIFT_ROS2_ENABLE_RCL=1 (system ROS 2 required).
  • check-api-stability digests with SWIFT_ROS2_DISABLE_RCL=1: with the RCL family in the graph, swift-api-digester emits a partial umbrella digest and misreports the entire public surface as removed vs a non-RCL baseline (46 false "removals"; every symbol verified present by the passing default suite). Equalizing the graph keeps the gate sharp for the whole frozen 1.x surface.
  • Allowlist back to entry-free: the two 1.3.0-era additive-enum entries dropped (baseline now includes both cases).

Verification

  • Manifest parses on all six arms (default / disable / local / local-zenoh / linux-rcl / windows).
  • Default Apple URL build + full test suite green (SwiftROS2RCLTests now included); zenoh URL variant build green.
  • diagnose-api-breaking-changes.sh 1.3.0zero breakages with the entry-free allowlist.
  • swift format lint --strict clean.

youtalk added 2 commits July 12, 2026 19:58
Completion-design §6, the post-tag pin PR:

- releaseBaseURL 1.2.0 -> 1.3.0; CZenohPico / CCycloneDDS checksums
  recomputed from the re-zipped 1.3.0 assets.
- CRos2Jazzy / CRos2JazzyZenoh flip from local-path binaryTargets to
  URL+checksum against the 1.3.0 release. The Apple binary target is
  now NAMED per variant (CRos2Jazzy / CRos2JazzyZenoh) so the zip's
  .xcframework basename matches the target name SwiftPM resolves;
  nothing imports the module from Swift, so the name is
  link-graph-only. Verified: a plain Apple build downloads and links
  CRos2Jazzy.xcframework.zip (29 MB), the zenoh variant resolves
  CRos2JazzyZenoh.xcframework.zip (48 MB).
- The SWIFT_ROS2_ENABLE_RCL packaging gate is REMOVED on Apple (the MZ2
  'Replace on Apple' decision): a plain swift build gets the RCL
  backend, and plain swift test now executes SwiftROS2RCLTests.
  SWIFT_ROS2_DISABLE_RCL=1 opts back out (wire-only graph, no
  download); SWIFT_ROS2_RCL_LOCAL=1 resolves the variant xcframework
  from build/ros2*/ for xcframework development — ci-rcl's macOS legs
  set it so they keep testing the HEAD-built artifact. Linux stays
  opt-in via SWIFT_ROS2_ENABLE_RCL=1 (system ROS 2 required).
- check-api-stability digests with SWIFT_ROS2_DISABLE_RCL=1: with the
  RCL family in the graph, swift-api-digester emits a partial umbrella
  digest and misreports the entire public surface as removed against a
  non-RCL baseline (46 false 'removals', all symbols verified present
  by the passing default test suite). Equalizing the graph on both
  sides keeps the gate sharp for the whole frozen 1.x surface.
- The two 1.3.0-era additive-enum allowlist entries are dropped — the
  baseline now includes TransportType.rcl and
  GeneratorError.unknownRequestedTypes.

Verified: manifest parses on all six arms (default / disable / local /
local-zenoh / linux-rcl / windows); default Apple URL build + full test
suite green; zenoh URL variant build green; diagnose-api vs 1.3.0
passes with ZERO breakages and an entry-free allowlist.

Signed-off-by: Yutaka Kondo <yutaka.kondo@youtalk.jp>
Since the 1.3.0 pin, Apple builds the RCL family by default — clearing
SWIFT_ROS2_ENABLE_RCL no longer removes it from the graph, so the
regen-drift guard's swift-ros2-gen run tried to resolve the job-level
SWIFT_ROS2_RCL_LOCAL build/ros2 xcframework before the cross-build step
produced it ('does not contain a binary artifact'). Set
SWIFT_ROS2_DISABLE_RCL=1 for the step instead.

Signed-off-by: Yutaka Kondo <yutaka.kondo@youtalk.jp>
@youtalk
youtalk merged commit 7994588 into main Jul 13, 2026
22 checks passed
@youtalk
youtalk deleted the release/1.3.0-pin branch July 13, 2026 04:40
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