Skip to content

Conversation

@cvilas
Copy link
Owner

@cvilas cvilas commented Nov 19, 2025

No description provided.

(cherry picked from commit 8c0e943)
(cherry picked from commit b02bea5)
(cherry picked from commit 87b4189)
(cherry picked from commit 0528aea)
@cvilas cvilas requested a review from Copilot November 19, 2025 19:47
Copilot finished reviewing on behalf of cvilas November 19, 2025 19:49
Copy link
Contributor

Copilot AI left a comment

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 introduces shared memory support and refactors several core components to improve API design and eliminate global mutable state. The changes focus on making the codebase more modular and thread-safe.

Key changes:

  • Added POSIX shared memory wrapper with comprehensive test coverage and examples
  • Refactored IPC initialization to use const reference instead of move semantics
  • Redesigned EgoClock API from static to instance-based to support multiple named clocks

Reviewed Changes

Copilot reviewed 48 out of 48 changed files in this pull request and generated 10 comments.

Show a summary per file
File Description
modules/common/realtime/include/grape/realtime/shared_memory.h New POSIX shared memory API with RAII semantics
modules/common/realtime/src/shared_memory.cpp Implementation of shared memory creation, mapping, and management
modules/common/realtime/tests/shared_memory_tests.cpp Comprehensive test coverage for shared memory operations
modules/common/realtime/examples/shm_futex_example.cpp Producer-consumer example using shared memory and futex
modules/common/realtime/examples/shared_memory_bench.cpp Performance benchmarks for shared memory operations
modules/common/ipc/include/grape/ipc/session.h Changed init() parameter from rvalue to const reference
modules/common/ipc/src/session.cpp Refactored to use atomic flag and atexit instead of RAII Manager
modules/common/ipc/py/session_bindings.cpp Updated Python bindings to match new signature
modules/experimental/robot/ego_clock/include/grape/ego_clock.h Changed from static API to instance-based with factory method
modules/experimental/robot/ego_clock/src/ego_clock.cpp Removed global state, added Impl class with per-instance receiver
modules/experimental/robot/ego_clock/src/clock_data.h Changed ClockTopic from struct to class with topic name composition
modules/experimental/robot/ego_clock/src/ego_clock_driver.cpp Added clock_name to Config and ClockTopic initialization
modules/common/utils/include/grape/utils/file_system.h Added getSystemName() and moved getHostName() from ip.h
modules/common/utils/src/file_system.cpp Implementation of getSystemName() with env/file/hostname fallback
modules/experimental/robot/locomotion/interface/include/grape/locomotion/topics.h Refactored topics to store composed topic_name instead of robot_name
external/third_party_versions.cmake Updated SDL3 from 3.2.24 to 3.2.26
external/CMakeLists.txt Enabled eCAL apps, ftxui, timeplugins, and additional third-party libs

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@cvilas cvilas merged commit bf1f784 into main Nov 19, 2025
0 of 2 checks passed
@cvilas cvilas deleted the feat/shm branch November 19, 2025 21:06
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