Skip to content

ci: add Lyrical to the build & test matrix - #17

Merged
benaliabderrahmane merged 1 commit into
mainfrom
ci-add-lyrical
Aug 19, 2026
Merged

ci: add Lyrical to the build & test matrix#17
benaliabderrahmane merged 1 commit into
mainfrom
ci-add-lyrical

Conversation

@benaliabderrahmane

@benaliabderrahmane benaliabderrahmane commented Jun 30, 2026

Copy link
Copy Markdown
Owner

Adds the next ROS 2 release Lyrical to the build-and-test CI matrix as a regular entry, alongside Jazzy / Kilted / Rolling.

How

  • ros_distro: [jazzy, kilted, rolling, lyrical] — one matrix list, no special-casing. Lyrical is no longer experimental, so the earlier draft's experimental flag and job-level continue-on-error are gone: a Lyrical failure turns CI red exactly like any other distro.
  • Like Rolling, Lyrical gets rosidl_buffer installed by name, since it branched from Rolling after that package landed.

Scope / notes

  • Build-and-test only (ci.yml). release.yml is unchanged.
  • Rebased onto current main; the branch is a single commit.
  • Verified: YAML parses and the matrix expands to 4 unconditional jobs.

Copilot AI lite review requested due to automatic review settings August 19, 2026 09:48
@benaliabderrahmane benaliabderrahmane changed the title ci: add Lyrical as a sample (experimental) build & test distro ci: add Lyrical to the build & test matrix Aug 19, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR substantially changes core runtime behavior in rmw_unix_socket_cpp (wait/graph wakeups, TRANSIENT_LOCAL durability semantics, and transport edge-case handling) and adds extensive new tests to cover those behaviors. It also updates CI to include the next ROS 2 distro (“lyrical”) in the build/test matrix, but the PR metadata currently describes the change as CI-only, which doesn’t match the actual scope.

Changes:

  • Add a pull-based TRANSIENT_LOCAL latched-cache design backed by per-publisher shared-memory rings (plus dedup watermarks and related test coverage).
  • Rework rmw_wait() to support doorbell-based cross-process wakeups for graph events, plus more selective draining and fd arming behavior.
  • Extend CI to build/test on lyrical and update dependency handling for rosidl_buffer.

Reviewed changes

Copilot reviewed 1 out of 1 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
.github/workflows/ci.yml Adds lyrical to the CI build/test matrix and adjusts rosidl_buffer install logic.
rmw_unix_socket_cpp/CMakeLists.txt Links registry implementation into graph tests for direct registry seeding.
rmw_unix_socket_cpp/DESIGN.md Updates design documentation to reflect doorbell wakeups, pull-based TRANSIENT_LOCAL replay, and context-id semantics.
rmw_unix_socket_cpp/src/registry.hpp Introduces ENTRY_DOORBELL registry entry type.
rmw_unix_socket_cpp/src/registry.cpp Rings per-context doorbells after registry mutations; unlinks TL shm on slot teardown; adds doorbell-safe ringing logic.
rmw_unix_socket_cpp/src/rmw_graph.cpp Throttles stale-entry cleanup to avoid GC work on every graph query.
rmw_unix_socket_cpp/src/rmw_init.cpp Generates/stores per-context random context_id; binds doorbell socket; timestamps initial cleanup sweep; tears down doorbell on fini.
rmw_unix_socket_cpp/src/rmw_node.cpp Publishes per-node graph guard conditions into a context list for rmw_wait triggering.
rmw_unix_socket_cpp/src/rmw_wait.cpp Major rework: context-aware wait sets, lazy doorbell registration for graph consumers, fd→entity arming cache, selective drain/dispatch, timeout semantics.
rmw_unix_socket_cpp/src/types.hpp Adds context identity + same-context detection, entity UID, wait-set arming bookkeeping, TL replay watermark storage, TL ring writer state.
rmw_unix_socket_cpp/src/transport.cpp Makes recv_from() consume/skip zero-length and runt datagrams to avoid spinning and drain termination issues.
rmw_unix_socket_cpp/src/shm_transport.hpp Defines TL ring layout/constants and public TL ring APIs (tl_ring_create/latch/pull/close).
rmw_unix_socket_cpp/src/shm_transport.cpp Implements TL ring creation/latching/pulling; expands orphan shm cleanup to cover TL segments.
rmw_unix_socket_cpp/src/rmw_publisher.cpp Creates/closes TL ring for TRANSIENT_LOCAL publishers; changes TL publish path to latch into TL ring and relies on subscriber pull + watermark dedup.
rmw_unix_socket_cpp/src/rmw_subscription.cpp Copies ignore-local option, pulls TL history at subscription creation, and drops replay duplicates via watermarks.
rmw_unix_socket_cpp/src/rmw_service.cpp Embeds context id into service GIDs.
rmw_unix_socket_cpp/src/rmw_client.cpp Embeds context id into client GIDs.
rmw_unix_socket_cpp/test/test_base.hpp Makes default test domain configurable per-fixture (enables private registry domains).
rmw_unix_socket_cpp/test/test_transport.cpp Adds tests ensuring zero-length datagrams are consumed and don’t block real messages.
rmw_unix_socket_cpp/test/test_shm_transport.cpp Adds extensive TL ring latch/pull tests, including poisoned-slot and overlap scenarios.
rmw_unix_socket_cpp/test/test_rmw_wait.cpp Adds many wait/graph/timeout/ignored-local tests covering new rmw_wait behavior.
rmw_unix_socket_cpp/test/test_rmw_service_client.cpp Adds a response-delivery-via-wait test for client readiness.
rmw_unix_socket_cpp/test/test_rmw_qos.cpp Updates TRANSIENT_LOCAL behavior tests for pull-based replay and new degradation semantics when shm is unavailable.
rmw_unix_socket_cpp/test/test_rmw_pub_sub.cpp Adds ignore_local_publications behavior test at pub/sub level.
rmw_unix_socket_cpp/test/test_rmw_graph.cpp Adds a throttle test for stale cleanup behavior (private domain).

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread .github/workflows/ci.yml
Comment on lines 11 to +17
build-and-test:
name: build & test (${{ matrix.ros_distro }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
ros_distro: [jazzy, kilted, rolling]
ros_distro: [jazzy, kilted, rolling, lyrical]
Comment thread .github/workflows/ci.yml
Comment on lines 1 to +17
name: CI

on:
push:
branches: [main]
branches: [main, devel]
pull_request:
branches: [main]
branches: [main, devel]
workflow_dispatch:

jobs:
build-and-test:
name: build & test (${{ matrix.ros_distro }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
ros_distro: [jazzy, kilted, rolling]
ros_distro: [jazzy, kilted, rolling, lyrical]
Copilot AI review requested due to automatic review settings August 19, 2026 09:53

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated no new comments.

@benaliabderrahmane
benaliabderrahmane merged commit 6238500 into main Aug 19, 2026
5 checks passed
Lyrical is no longer experimental: it joins the matrix as a regular entry,
exactly like jazzy/kilted/rolling, and the experimental/continue-on-error
scaffolding from the first draft is gone with it. Like Rolling it needs
rosidl_buffer installed by name, since it branched from Rolling after that
package landed.
benaliabderrahmane pushed a commit that referenced this pull request Aug 27, 2026
Bring the release-prep commits on main into devel ahead of the v0.5.0 release
PR: the GitHub issue forms and PR template (#56) and the Lyrical CI matrix
entry (#17). Conflict-free; ci.yml takes Lyrical from main and keeps devel's
[main, devel] push/PR triggers.
benaliabderrahmane pushed a commit that referenced this pull request Aug 27, 2026
… 0.5.0

The repository had no changelog, so this adds one covering every tag, not just
the new release. Entries are reconstructed from the commit bodies and tag
annotations; 0.5.0 is the wait/wakeup release (doorbell wakeup, pull-based
TRANSIENT_LOCAL replay, ignore_local_publications, graph guard conditions) and
carries the upgrade notes, since a mixed-build fleet loses latched replay and
registry wakeups during the rollout window.

package.xml had said 0.1.0 since the first commit — it was never bumped for
0.2.0 through 0.4.1, so a built package reported a version five releases stale.
README's Status block said 0.1.0 for the same reason, and still listed only
Jazzy/Kilted/Rolling although Lyrical joined the CI matrix in #17.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@benaliabderrahmane benaliabderrahmane mentioned this pull request Aug 27, 2026
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.

2 participants