# Upcoming ABI break in ros2\_control framework

**URL:** <https://discourse.openrobotics.org/t/upcoming-abi-break-in-ros2-control-framework/51438>\
**Category:** ros-controls Announcements and News\
**Tags:** release, abi, ros2\_control\
**Created:** [December 17, 2025, 10:28am UTC](https://discourse.openrobotics.org/t/upcoming-abi-break-in-ros2-control-framework/51438 "2025-12-17T10:28:40Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![saikishor](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/saikishor/32/26420_2.png) [@saikishor](https://discourse.openrobotics.org/u/saikishor)\
**Post date:** [December 17, 2025, 10:28am UTC](https://discourse.openrobotics.org/t/upcoming-abi-break-in-ros2-control-framework/51438/1 "2025-12-17T10:28:41Z")

</div>

Hello Community,

We would like to inform you about an upcoming ABI break in the next sync of Jazzy and Kilted. The reason for this breaking change is that, during our tests, we observed that a significant portion of the real-time loop’s execution time was being lost during `get_lifecycle_state` checks. We realized that while the `rclcpp_lifecycle::State` class is thread-safe, but it is not real-time safe.In order to address this, we have introduced [a change that caches the ID value](https://github.com/ros-controls/ros2_control/pull/2884) and processes it from the framework side. Voilà—this results in a substantial improvement compared to the previous behavior. I’m sharing the performance plots here for your reference.

**RRBot**  
[![image](https://us1.discourse-cdn.com/flex022/uploads/ros/original/3X/b/8/b82a01bf9dce6257f062346cb3c2a1348b74709b.png)](https://private-user-images.githubusercontent.com/10082428/522605076-e9d7bd81-6c4d-411d-99a7-0069e51dccd5.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NjU5Njc0MzcsIm5iZiI6MTc2NTk2NzEzNywicGF0aCI6Ii8xMDA4MjQyOC81MjI2MDUwNzYtZTlkN2JkODEtNmM0ZC00MTFkLTk5YTctMDA2OWU1MWRjY2Q1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTEyMTclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUxMjE3VDEwMjUzN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWI2NDAyMTRhZGEzNWI1OWQxYTViOWE0ZjlkMDUzNGJjOTZiYTM2ZDg3Zjk5YWJmYzJmYzFmNDU0MDdjMzQwMGEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.TB30YpcGSMuXpC4c1BHMdOCA-ULMIbFwUCpJgyqedjY)  
[![image](https://us1.discourse-cdn.com/flex022/uploads/ros/original/3X/1/6/1609cbcfb4981575fa0ff0ebddc31f57212b2811.png)](https://private-user-images.githubusercontent.com/10082428/522606032-3465a0da-65f4-441d-b35a-7fcba0148458.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NjU5Njc0MzcsIm5iZiI6MTc2NTk2NzEzNywicGF0aCI6Ii8xMDA4MjQyOC81MjI2MDYwMzItMzQ2NWEwZGEtNjVmNC00NDFkLWIzNWEtN2ZjYmEwMTQ4NDU4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTEyMTclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUxMjE3VDEwMjUzN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJkYjViMTU2ZmE4MGZmN2E1Y2MyYzE3NmNkNjJlMzU3NGE0NTdlMzM2NjNjM2YxZTE3NzZmNzQ1NDk4ODNiNGYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.QaLKAFLB2spBo3cgCC40k-ml9uPowprlILNlqpGoDgA)  
**With the proposed changes:**

**RRBot**  
[![image](https://us1.discourse-cdn.com/flex022/uploads/ros/original/3X/1/2/120324f37fbd16333b9928beeb552539fa42d60a.png)](https://private-user-images.githubusercontent.com/10082428/522605324-d0bdb923-5843-43ec-9c85-345cfba87693.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NjU5Njc0MzcsIm5iZiI6MTc2NTk2NzEzNywicGF0aCI6Ii8xMDA4MjQyOC81MjI2MDUzMjQtZDBiZGI5MjMtNTg0My00M2VjLTljODUtMzQ1Y2ZiYTg3NjkzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTEyMTclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUxMjE3VDEwMjUzN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTAzNDcwYWZmZWEzMzliYzM3MjQyODUyYjE3NmYyOTc5MTcyNTNiN2E1ZjliNzQ4MzNkMTRjNzg1ZmI3ZWY0MjQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.JOfbEgJwQ92Pe5-1HU3FE5XogmksDSzLjVGR89qCLP0)

 ![image](https://us1.discourse-cdn.com/flex022/uploads/ros/original/3X/4/1/41daa4c3e877c3bb6b880350a85d6638cb55ab6a.png)

We hope this change will help many of you who are running hardware at higher frequencies, providing additional headroom for computation.

P.S. As this is an ABI break, you would need to rebuild all your workspaces

We will be introducing some more changes in the next sync, so that we can reduce the ABI breaking in the future: [https://github.com/ros-controls/ros2\_control/pull/2898](https://github.com/ros-controls/ros2_control/pull/2898). So, for now for the next couple of syncs, please rebuild your workspaces

Apologies for the inconvenience caused

---

<div class="post-metadata">

**Author:** ![peci1](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/peci1/32/10145_2.png) [@peci1](https://discourse.openrobotics.org/u/peci1)\
**Post date:** [December 18, 2025, 11:08am UTC](https://discourse.openrobotics.org/t/upcoming-abi-break-in-ros2-control-framework/51438/2 "2025-12-18T11:08:03Z")

</div>

> [@saikishor](#):
>
> next couple of syncs,

Couldn’t all the breaks be done in a single sync?

Anyways, thanks for the heads up.

---

<div class="post-metadata">

**Author:** ![saikishor](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/saikishor/32/26420_2.png) [@saikishor](https://discourse.openrobotics.org/u/saikishor)\
**Post date:** [December 18, 2025, 11:31am UTC](https://discourse.openrobotics.org/t/upcoming-abi-break-in-ros2-control-framework/51438/3 "2025-12-18T11:31:13Z")

</div>

Sure, we are trying to do exactly that. Atleast with Jazzy, we withhold some of the PRs for that reason. The idea is to do it in a single sync. I prefer to say couple and do in a one or two sync.

Thank you for your comment 🙂
