Skip to content

Conversation

@firesurfer
Copy link

@firesurfer firesurfer commented May 14, 2024

This is a (manual) backport of #2495 to Iron as discussed in #2242.

As you might notice this PR does not go the way @jmachowinski suggested in #2242 (comment). (As I do not really see how these changes should be easily backported as they change quite a lot of the logic).

But I think the changes do not introduce an API/ABI break (in contrast to what @fujitatomoya wrote in #2242 (comment))

As stated in the developer guide

For compiled code, the ABI is considered part of the public interface. Any change that requires recompiling dependent code is considered major (breaking).

As this PR only changes the definition of private methods it is not necessary to recompile dependent code. I just tested this with our own code base (which uses ros2control with quite a lot of JTCs running at the same time) and it seemed to work fine.
( I only compiled the backport of rclcpp and rclcpp_action, enabled overrides for the workspace, made sure that I do not recompile our own code, and removed the system installation of rclcpp_action with sudo dpkg --force-all --remove ros-iron-rclcpp-action)

Given that it only changes private methods and that EntityType is not exposed via any public methods I would argue that this backport also does not change the public API.

Please note that I did not backport the adapted tests so far as I would like to hear some feedback first.

EDIT:
@fmauch perhaps it might be interesting for you to test this backport on your UR test setup.

@jmachowinski
Copy link
Collaborator

Given that it only changes private methods and that EntityType is not exposed via any public methods I would argue that this backport also does not change the public API.

Messing with the method signatures, might change the the size of the objects or the memory layout, regardless of private, public or protected.

@firesurfer
Copy link
Author

firesurfer commented May 14, 2024

Non virtual methods are stored the same way as free standing functions and do not change the object (even though not guaranteed by the standard).

But given that you did a back port yourself I will close this one.

@firesurfer firesurfer closed this May 14, 2024
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