All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.8.0 - 2026-06-22
- re-export rosidl_runtime_rs from rclrs (#649)
- [breaking] Re-Export Generated Messages in rclrs (#556)
- add server_is_available to ActionClientState (#622)
- [breaking] add parameter callbacks (#611)
- add logging_rosout.h to the list of headers to generate bindings for (#594)
- handle rolling introspection member layout (#641)
- correct pointer dereference in resize_unchecked function (#630)
- gate deprecated liveliness variant by distro (ros2/rmw#414) (#624)
- replace try_next with try_recv (#609)
- initialize rosout publisher on distros newer than Humble (#593)
- update ros-env dependency to 0.2 (#648)
- (bindings) regenerate bindings for rolling (#633)
- (bindings) regenerate bindings for humble (#639)
- (bindings) regenerate bindings for rolling (#621)
- Add service introspection (#560)
- (bindings) regenerate bindings for humble (#596)
- (bindings) regenerate bindings for kilted (#597)
- (bindings) regenerate bindings for rolling (#598)
- (bindings) regenerate bindings for jazzy (#599)
0.7.0 - 2026-01-18
- dynamic message publishers and subscribers (#492)
- add explicit lifetimes to fix mismatched_lifetime_syntaxes warnings (#564)
- blocklist duplicate typesupport extern declarations (#565)
- Regenerate bindings for rolling (#580)
- Regenerate bindings for kilted (#579)
- Regenerate bindings for humble (#577)
- Regenerate bindings for jazzy (#578)
- [breaking] bump rosidl_runtime_rs version (#571)
- [breaking] require rustc 1.85 (#566)
- Add support for best available QoS (#555)
- Regenerate bindings for kilted (#542)
- Regenerate bindings for rolling (#543)
- Regenerate bindings for jazzy (#529)
- Regenerate bindings for humble (#534)
0.6.0 - 2025-10-27
- re-add generate_bindings.py script
- Minimal changes for new Action trait (#539)
- Re-export traits from rosidl_runtime_rs (#537)
- Fix use of serde (#538)
- Put
use rustflagsnext to its usage to prevent a build warning. (#526)
0.5.1 - 2025-08-23
- Fix executor timeout (#519)
0.5.0 - 2025-08-15
- vendorize messages so that cargo update works (#509)
- Moved examples to its own repo (#504)
- Wake up wait set when adding a new waitable (#505)
- rename generate_docs feature to use_ros_shim (#501)
- Async Workers (#446)
- Shared state pattern (spin-off of #427) (#430)
- Options pattern (spin-off of #427) (#429)
- Fix RAII for subscription, client, and service (#463)
- Execution structure (spin-off of #427) (#428)
- Remove Iron support (#443)
- Add Publisher::get_subscription_count (#457)
- Bumb bindgen dependency to 0.70 (#452)
- Update for clippy 1.83 (#441)
- Add Publisher::can_loan_msgs (#434)
- Add rosout logging to rclrs (#422)
- Update vendored interface packages (#423)
- Use latest stable Rust CI + Fix Test Errors (#420)
- Add std::error::Error impls to Error enums of
parametermodule (#413) - Wrap slice::from_raw_parts to be compatible with rcl (#419)
- Compile on targets where c_char ≠ i8 (#403)
- Add parameter services (#342)
- Fixup of #388 (#389)
- Fix link formatting
- Get rid of doc links to private structs
- Update documentation on ENTITY_LIFECYCLE_MUTEX
- Improve the documentation for the domain ID situation of test_graph_empty
- Rename to avoid confusion with Handle pattern
- Update documentation and safety info on rcl entity lifecycles
- Remove the need for lazy_static
- Satisfy clippy
- Use usize instead of u8 for domain id
- Ensure that test_graph_empty works even if the system has ROS_DOMAIN_ID set to 99
- Run clippy
- Run rustfmt
- Apply lifecycle lock to all middleware entities
- Ensure that mutex guards are not being dropped prematurely
- Introduce InitOptions to allow manually setting domain ID
- Keep context alive for guard conditions
- Manage all rcl bindings with Handle structs
- Reworking the lifecycle management of rcl bindings
- Import the builtin_interfaces directly from the internal vendor module.
- Added
test_msgsas a test dependency - Move the tests in the
rclrs_testscrate intorclrs. - Move rcl structs to end of Node declaration
- Allow ros2_rust to be built within a distro workspace
- Add default implementation and builder pattern for QoS (#361)
- Adding a simple helper function for converting
rclrs::Timeto a ros message (#359) - Remove leading underscore from private fields (#354)
0.4.1 - 2023-11-28
- Added minor changes to enable documentation generation on docs.rs for the
ros2-rustprojects.
0.4.0 - 2023-11-07
- Service clients now support service_is_ready to check if a service server is present ahead of calling (#399)
- Added preliminary support for parameters
- Added support for Iron Irwini
- Added Serde big array support
- Added basic functionality for loading introspection type support libraries
- Added extended string types
- Added time source and clock API to nodes
- Removed support for Galactic
- Removed support for Foxy
0.3.1 - 2022-10-17
- Fixed segfault when re-using
WaitSet - Fixed
Node::get_{publishers,subscriptions}_info_by_topic()
0.3.0 - 2022-10-03
- First release
colcon-cargoandcolcon-ros-cargocan now build any pure Cargo and ament-aware Cargo projectsrclrsandrclrs_examplesare nowament_cargoprojects, no more CMake involvedrosidl_generator_rshas been updated to support all ROS message typesrclrsnow supports clients and services- Better API documentation
- Foxy, Galactic, Humble and Rolling are now supported ROS distros
- Preliminary support for Windows
- Build based on
colcon-ros-cargo - Message generation packages
rosidl_generator_rsandrosidl_runtime_rs - Publisher, Subscription, Client and Service
- Tunable QoS settings