|
| 1 | +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| 2 | +Changelog for package rosidl_generator_rs |
| 3 | +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| 4 | + |
| 5 | +Forthcoming |
| 6 | +----------- |
| 7 | +* Update vendored interface packages (`#423 <https://github.com/ros2-rust/rosidl_rust/issues/423>`_) |
| 8 | + * Update rclrs vendor_interfaces.py script |
| 9 | + This updates the vendor_interfaces.py script to also vendor in the |
| 10 | + action_msgs and unique_identifier_msgs packages. The script is modified |
| 11 | + to always use a list of package names rather than hard-coding the |
| 12 | + package names everywhere. |
| 13 | + * Silence certain clippy lints on generated code |
| 14 | + In case a user enforces clippy linting on these generated packages, |
| 15 | + silence expected warnings. This is already the case in rclrs, but should |
| 16 | + be applied directly to the generated packages for the sake of downstream |
| 17 | + users. |
| 18 | + The `clippy::derive_partial_eq_without_eq` lint was already being |
| 19 | + disabled for the packages vendored by rclrs, but is now moved to the |
| 20 | + rosidl_generator_rs template instead. This is necessary since we always |
| 21 | + derive the PartialEq trait, but can't necessary derive Eq, and so don't. |
| 22 | + The `clippy::upper_case_acronyms` is new and was added to account for |
| 23 | + message type names being upper-case acrynyms, like |
| 24 | + unique_identifier_msgs::msg::UUID. |
| 25 | + * Update vendored message packages |
| 26 | + This updates the message packages vendored under the rclrs `vendor` |
| 27 | + module. The vendor_interfaces.py script was used for reproducibility. |
| 28 | + The existing packages – rcl_interfaces, rosgraph_msgs, and |
| 29 | + builtin_interfaces – are only modified in that they now use the |
| 30 | + std::ffi::c_void naming for c_void instead of the std::os::raw::c_void |
| 31 | + alias and disable certain clippy lints. |
| 32 | + The action_msgs and unique_identifier_msgs packages are newly added to |
| 33 | + enable adding action support to rclrs. action_msgs is needed for |
| 34 | + interaction with action goal info and statuses, and has a dependency on |
| 35 | + unique_identifier_msgs. |
| 36 | +* Action message support (`#417 <https://github.com/ros2-rust/rosidl_rust/issues/417>`_) |
| 37 | + * Added action template |
| 38 | + * Added action generation |
| 39 | + * Added basic create_action_client function |
| 40 | + * dded action generation |
| 41 | + * checkin |
| 42 | + * Fix missing exported pre_field_serde field |
| 43 | + * Removed extra code |
| 44 | + * Sketch out action server construction and destruction |
| 45 | + This follows generally the same pattern as the service server. It |
| 46 | + required adding a typesupport function to the Action trait and pulling |
| 47 | + in some more rcl_action bindings. |
| 48 | + * Fix action typesupport function |
| 49 | + * Add ActionImpl trait with internal messages and services |
| 50 | + This is incomplete, since the service types aren't yet being generated. |
| 51 | + * Split srv.rs.em into idiomatic and rmw template files |
| 52 | + This results in the exact same file being produced for services, |
| 53 | + except for some whitespace changes. However, it enables actions to |
| 54 | + invoke the respective service template for its generation, similar to |
| 55 | + how the it works for services and their underlying messages. |
| 56 | + * Generate underlying service definitions for actions |
| 57 | + Not tested |
| 58 | + * Add runtime trait to get the UUID from a goal request |
| 59 | + C++ uses duck typing for this, knowing that for any `Action`, the type |
| 60 | + `Action::Impl::SendGoalService::Request` will always have a `goal_id` |
| 61 | + field of type `unique_identifier_msgs::msg::UUID` without having to |
| 62 | + prove this to the compiler. Rust's generics are more strict, requiring |
| 63 | + that this be proven using type bounds. |
| 64 | + The `Request` type is also action-specific as it contains a `goal` field |
| 65 | + containing the `Goal` message type of the action. We therefore cannot |
| 66 | + enforce that all `Request`s are a specific type in `rclrs`. |
| 67 | + This seems most easily represented using associated type bounds on the |
| 68 | + `SendGoalService` associated type within `ActionImpl`. To avoid |
| 69 | + introducing to `rosidl_runtime_rs` a circular dependency on message |
| 70 | + packages like `unique_identifier_msgs`, the `ExtractUuid` trait only |
| 71 | + operates on a byte array rather than a more nicely typed `UUID` message |
| 72 | + type. |
| 73 | + I'll likely revisit this as we introduce more similar bounds on the |
| 74 | + generated types. |
| 75 | + * Integrate RMW message methods into ActionImpl |
| 76 | + Rather than having a bunch of standalone traits implementing various |
| 77 | + message functions like `ExtractUuid` and `SetAccepted`, with the |
| 78 | + trait bounds on each associated type in `ActionImpl`, we'll instead add |
| 79 | + these functions directly to the `ActionImpl` trait. This is simpler on |
| 80 | + both the rosidl_runtime_rs and the rclrs side. |
| 81 | + * Add rosidl_runtime_rs::ActionImpl::create_feedback_message() |
| 82 | + Adds a trait method to create a feedback message given the goal ID and |
| 83 | + the user-facing feedback message type. Depending on how many times we do |
| 84 | + this, it may end up valuable to define a GoalUuid type in |
| 85 | + rosidl_runtime_rs itself. We wouldn't be able to utilize the |
| 86 | + `RCL_ACTION_UUID_SIZE` constant imported from `rcl_action`, but this is |
| 87 | + pretty much guaranteed to be 16 forever. |
| 88 | + Defining this method signature also required inverting the super-trait |
| 89 | + relationship between Action and ActionImpl. Now ActionImpl is the |
| 90 | + sub-trait as this gives it access to all of Action's associated types. |
| 91 | + Action doesn't need to care about anything from ActionImpl (hopefully). |
| 92 | + * Add GetResultService methods to ActionImpl |
| 93 | + * Implement ActionImpl trait methods in generator |
| 94 | + These still don't build without errors, but it's close. |
| 95 | + * Replace set_result_response_status with create_result_response |
| 96 | + rclrs needs to be able to generically construct result responses, |
| 97 | + including the user-defined result field. |
| 98 | + * Implement client-side trait methods for action messages |
| 99 | + This adds methods to ActionImpl for creating and accessing |
| 100 | + action-specific message types. These are needed by the rclrs |
| 101 | + ActionClient to generically read and write RMW messages. |
| 102 | + Due to issues with qualified paths in certain places |
| 103 | + (https://github.com/rust-lang/rust/issues/86935), the generator now |
| 104 | + refers directly to its service and message types rather than going |
| 105 | + through associated types of the various traits. This also makes the |
| 106 | + generated code a little easier to read, with the trait method signatures |
| 107 | + from rosidl_runtime_rs still enforcing type-safety. |
| 108 | + * Format the rosidl_runtime_rs::ActionImpl trait |
| 109 | + * Wrap longs lines in rosidl_generator_rs action.rs |
| 110 | + This at least makes the template easier to read, but also helps with the |
| 111 | + generated code. In general, the generated code could actually fit on one |
| 112 | + line for the function signatures, but it's not a big deal to split it |
| 113 | + across multiple. |
| 114 | + * Use idiomatic message types in Action trait |
| 115 | + This is user-facing and so should use the friendly message types. |
| 116 | + * Cleanup ActionImpl using type aliases |
| 117 | + * Formatting |
| 118 | + * Switch from std::os::raw::c_void to std::ffi::c_void |
| 119 | + While these are aliases of each other, we might as well use the more |
| 120 | + appropriate std::ffi version, as requested by reviewers. |
| 121 | + * Clean up rosidl_generator_rs's cmake files |
| 122 | + Some of the variables are present but no longer used. Others were not |
| 123 | + updated with the action changes. |
| 124 | + * Add a short doc page on the message generation pipeline |
| 125 | + This should help newcomers orient themselves around the rosidl\_*_rs |
| 126 | + packages. |
| 127 | + --------- |
| 128 | + Co-authored-by: Esteve Fernandez <esteve@apache.org> |
| 129 | + Co-authored-by: Michael X. Grey <grey@openrobotics.org> |
| 130 | +* Declare rust_packages only when installing Rust IDL bindings (`#380 <https://github.com/ros2-rust/rosidl_rust/issues/380>`_) |
| 131 | +* Allow ros2_rust to be built within a distro workspace |
| 132 | +* Add wchar support (`#349 <https://github.com/ros2-rust/rosidl_rust/issues/349>`_) |
| 133 | + * Add wchar support and .idl example |
| 134 | + * Undo automatic IDE formatting noise |
| 135 | + * Added back unused imports to see if this fixes the build |
| 136 | + * More attempts to fix the weird build failure |
| 137 | + * Removed the linter tests for auto-generated message source files in `rclrs_example_msgs`. Re-applied some changes removed when root causing. |
| 138 | + --------- |
| 139 | + Co-authored-by: Sam Privett <sam@privett.dev> |
| 140 | +* Version 0.4.1 (`#353 <https://github.com/ros2-rust/rosidl_rust/issues/353>`_) |
| 141 | +* Version 0.4.0 (`#346 <https://github.com/ros2-rust/rosidl_rust/issues/346>`_) |
| 142 | +* Revert "Version 0.4.0 (`#343 <https://github.com/ros2-rust/rosidl_rust/issues/343>`_)" (`#344 <https://github.com/ros2-rust/rosidl_rust/issues/344>`_) |
| 143 | + This reverts commit a64e397990319db39caf79ef7863b21fb2c828ea. |
| 144 | +* Version 0.4.0 (`#343 <https://github.com/ros2-rust/rosidl_rust/issues/343>`_) |
| 145 | +* add serde big array support (fixed `#327 <https://github.com/ros2-rust/rosidl_rust/issues/327>`_) (`#328 <https://github.com/ros2-rust/rosidl_rust/issues/328>`_) |
| 146 | + * add serde big array support |
| 147 | +* Swapped usage of rosidl_cmake over to the new rosidl_pycommon. (`#297 <https://github.com/ros2-rust/rosidl_rust/issues/297>`_) |
| 148 | + * Swapped usage of rosidl_cmake over to the new rosidl_pycommon. |
| 149 | + As of [rosidl 3.3.0](https://github.com/ros2/rosidl/commit/9348ce9b466335590dc334aab01f4f0dd270713b), the rosidl_cmake Python module was moved to a new rosidl_pycommon package and the Python module in rosidl_cmake was deprecated. |
| 150 | + * Support builds from older ROS 2 distros. |
| 151 | + * Fixed build for rolling |
| 152 | + * Added `test_depend` conditional inclusion as well. |
| 153 | + * Swap to a more elegant check |
| 154 | + * PR Feedback |
| 155 | + --------- |
| 156 | + Co-authored-by: Sam Privett <sam@privett.dev> |
| 157 | +* Remove libc dependencies (`#284 <https://github.com/ros2-rust/rosidl_rust/issues/284>`_) |
| 158 | +* Version 0.3.1 (`#285 <https://github.com/ros2-rust/rosidl_rust/issues/285>`_) |
| 159 | +* Add TYPE_NAME constant to messages and make error fields public (`#277 <https://github.com/ros2-rust/rosidl_rust/issues/277>`_) |
| 160 | +* Bump package versions to 0.3 (`#274 <https://github.com/ros2-rust/rosidl_rust/issues/274>`_) |
| 161 | +* Add support for constants to message generation (`#269 <https://github.com/ros2-rust/rosidl_rust/issues/269>`_) |
| 162 | + This will produce: |
| 163 | + ``` |
| 164 | + impl VariousTypes { |
| 165 | + /// binary, hexadecimal and octal constants are also possible |
| 166 | + pub const TWO_PLUS_TWO: i8 = 5; |
| 167 | + /// Only unbounded strings are possible |
| 168 | + pub const PASSWORD: &'static str = "hunter2"; |
| 169 | + /// As determined by Edward J. Goodwin |
| 170 | + pub const PI: f32 = 3.0; |
| 171 | + } |
| 172 | + ``` |
| 173 | +* Small bugfix for sequences of WStrings (`#240 <https://github.com/ros2-rust/rosidl_rust/issues/240>`_) |
| 174 | + Message packages containing unbounded sequences of WStrings, like test_msgs, would not compile because of this. |
| 175 | +* Fix path handling in rosidl_generator_rs on Windows (`#228 <https://github.com/ros2-rust/rosidl_rust/issues/228>`_) |
| 176 | + Paths on Windows can contain colons. With rsplit, the drive letter was |
| 177 | + grouped with the package name. |
| 178 | +* Added support for clients and services (`#146 <https://github.com/ros2-rust/rosidl_rust/issues/146>`_) |
| 179 | + * Added support for clients and services |
| 180 | +* feat: obtain interface version from cmake variable (`#191 <https://github.com/ros2-rust/rosidl_rust/issues/191>`_) |
| 181 | + * feat: obtain interface version from cmake variable |
| 182 | + * refactor: append package version into generator arguments file |
| 183 | +* Add build.rs to messages to automatically find the message libraries (`#140 <https://github.com/ros2-rust/rosidl_rust/issues/140>`_) |
| 184 | +* Generate Cargo.toml of message crate with an EmPy template, not CMake (`#138 <https://github.com/ros2-rust/rosidl_rust/issues/138>`_) |
| 185 | + * Generate Cargo.toml of message crate with an EmPy template, not CMake |
| 186 | + * Add comment |
| 187 | +* Add serde support to messages (`#131 <https://github.com/ros2-rust/rosidl_rust/issues/131>`_) |
| 188 | +* Bump every package to version 0.2 (`#100 <https://github.com/ros2-rust/rosidl_rust/issues/100>`_) |
| 189 | +* Enable Clippy in CI (`#83 <https://github.com/ros2-rust/rosidl_rust/issues/83>`_) |
| 190 | +* Message generation refactoring (`#80 <https://github.com/ros2-rust/rosidl_rust/issues/80>`_) |
| 191 | + Previously, only messages consisting of basic types and strings were supported. Now, all message types will work, including those that have fields of nested types, bounded types, or arrays. |
| 192 | + Changes: |
| 193 | + - The "rsext" library is deleted |
| 194 | + - Unused messages in "rosidl_generator_rs" are deleted |
| 195 | + - There is a new package, "rosidl_runtime_rs", see below |
| 196 | + - The RMW-compatible messages from C, which do not require an extra conversion step, are exposed in addition to the "idiomatic" messages |
| 197 | + - Publisher and subscription are changed to work with both idiomatic and rmw types, through the unifying `Message` trait |
| 198 | + On `rosidl_runtime_rs`: This package is the successor of `rclrs_msg_utilities` package, but doesn't have much in common with it anymore. |
| 199 | + It provides common types and functionality for messages. The `String` and `Sequence` types and their variants in that package essentially wrap C types from the `rosidl_runtime_c` package and C messages generated by the "rosidl_generator_c" package. |
| 200 | + A number of functions and traits are implemented on these types, so that they feel as ergonomic as possible, for instance, a `seq!` macro for creating a sequence. There is also some documentation and doctests. |
| 201 | + The memory for the (non-pretty) message types is managed by the C allocator. |
| 202 | + Not yet implemented: |
| 203 | + - long double |
| 204 | + - constants |
| 205 | + - Services/clients |
| 206 | + - @verbatim comments |
| 207 | + - ndarray for sequences/arrays of numeric types |
| 208 | + - implementing `Eq`, `Ord` and `Hash` when a message contains no floats |
| 209 | +* Use the ament_cargo build type (`#73 <https://github.com/ros2-rust/rosidl_rust/issues/73>`_) |
| 210 | + * Use the ament_cargo build type |
| 211 | + The rclrs_crate_config_generator is superseded by colcon-ros-cargo. |
| 212 | + The ament_cmake_export_crates mechanism is subsumed by creating entries in the ament index directly in the rosidl_generator_rs and cargo-ament-build. |
| 213 | + * Install colcon-cargo and colcon-ros-cargo |
| 214 | + * Force running pip3 as root |
| 215 | + * Install cargo-ament-build |
| 216 | + * Removed no longer needed dependencies |
| 217 | + * Disable Rolling job |
| 218 | + * Update README |
| 219 | + * Update rust.yml |
| 220 | + * Update README.md |
| 221 | + Co-authored-by: Esteve Fernandez <esteve@apache.org> |
| 222 | +* Build system refactor (`#64 <https://github.com/ros2-rust/rosidl_rust/issues/64>`_) |
| 223 | + * Experimental change to build system. |
| 224 | + Allows IDE to parse dependencies. |
| 225 | + Distro A, OPSEC `#4584 <https://github.com/ros2-rust/rosidl_rust/issues/4584>`_. You may have additional rights; please see https://rosmilitary.org/faq/?category=ros-2-license |
| 226 | + * Remove commented code |
| 227 | + Distro A, OPSEC `#4584 <https://github.com/ros2-rust/rosidl_rust/issues/4584>`_. You may have additional rights; please see https://rosmilitary.org/faq/?category=ros-2-license |
| 228 | + * Refactoring to workspace layout. Does not compile. |
| 229 | + Distro A, OPSEC `#4584 <https://github.com/ros2-rust/rosidl_rust/issues/4584>`_. You may have additional rights; please see https://rosmilitary.org/faq/?category=ros-2-license |
| 230 | + * Revert change to workspace, general CMake tweaks |
| 231 | + Distro A, OPSEC `#4584 <https://github.com/ros2-rust/rosidl_rust/issues/4584>`_. You may have additional rights; please see https://rosmilitary.org/faq/?category=ros-2-license |
| 232 | + * Initial re-make of build system |
| 233 | + Distro A, OPSEC `#4584 <https://github.com/ros2-rust/rosidl_rust/issues/4584>`_. You may have additional rights; please see https://rosmilitary.org/faq/?category=ros-2-license |
| 234 | + * Fixing warnings within rosidl_generator |
| 235 | + Distro A, OPSEC `#4584 <https://github.com/ros2-rust/rosidl_rust/issues/4584>`_. You may have additional rights; please see https://rosmilitary.org/faq/?category=ros-2-license |
| 236 | + * Make sure cargo builds within the correct directory |
| 237 | + Distro A, OPSEC `#4584 <https://github.com/ros2-rust/rosidl_rust/issues/4584>`_. You may have additional rights; please see https://rosmilitary.org/faq/?category=ros-2-license |
| 238 | + * Add in checks for ROS 2 version to change |
| 239 | + the compilation syntax |
| 240 | + Distro A, OPSEC `#4584 <https://github.com/ros2-rust/rosidl_rust/issues/4584>`_. You may have additional rights; please see https://rosmilitary.org/faq/?category=ros-2-license |
| 241 | + * Properly query environment variable |
| 242 | + Distro A, OPSEC `#4584 <https://github.com/ros2-rust/rosidl_rust/issues/4584>`_. You may have additional rights; please see https://rosmilitary.org/faq/?category=ros-2-license |
| 243 | + * Only bind rcl, rmw, and rcutils |
| 244 | + Distro A, OPSEC `#4584 <https://github.com/ros2-rust/rosidl_rust/issues/4584>`_. You may have additional rights; please see https://rosmilitary.org/faq/?category=ros-2-license |
| 245 | + * Re-write to move most of `rclrs_common` to `rclrs` |
| 246 | + Distro A, OPSEC `#4584 <https://github.com/ros2-rust/rosidl_rust/issues/4584>`_. You may have additional rights; please see https://rosmilitary.org/faq/?category=ros-2-license |
| 247 | + * Updating/fixing package XML to comply with |
| 248 | + format 3 schema |
| 249 | + Distro A, OPSEC `#4584 <https://github.com/ros2-rust/rosidl_rust/issues/4584>`_. You may have additional rights; please see https://rosmilitary.org/faq/?category=ros-2-license |
| 250 | + * Missed a schema update |
| 251 | + Distro A, OPSEC `#4584 <https://github.com/ros2-rust/rosidl_rust/issues/4584>`_. You may have additional rights; please see https://rosmilitary.org/faq/?category=ros-2-license |
| 252 | + * Missed another schema... |
| 253 | + Distro A, OPSEC `#4584 <https://github.com/ros2-rust/rosidl_rust/issues/4584>`_. You may have additional rights; please see https://rosmilitary.org/faq/?category=ros-2-license |
| 254 | + * Remove manual crate paths in toml files |
| 255 | + Distro A, OPSEC `#4584 <https://github.com/ros2-rust/rosidl_rust/issues/4584>`_. You may have additional rights; please see https://rosmilitary.org/faq/?category=ros-2-license |
| 256 | +* Fix array type generation. And append an '_' to field names that an rust keywords. (`#30 <https://github.com/ros2-rust/rosidl_rust/issues/30>`_) |
| 257 | +* Build on Dashing+ (`#24 <https://github.com/ros2-rust/rosidl_rust/issues/24>`_) |
| 258 | + * fix warnings |
| 259 | + * update README for Ubuntu 18.04 |
| 260 | + * Build on Dashing |
| 261 | + * Build on Eloquent |
| 262 | + * Build on Foxy |
| 263 | + * clean in IDL generator |
| 264 | + * Use foxy in pipeline |
| 265 | + Co-authored-by: deb0ch <tom@blackfoot.io> |
| 266 | + Co-authored-by: deb0ch <thomas.de.beauchene@gmail.com> |
| 267 | +* Crystal and more (`#3 <https://github.com/ros2-rust/rosidl_rust/issues/3>`_) |
| 268 | + * nested messages working |
| 269 | + * fix array support |
| 270 | + * add rcl_sys |
| 271 | + * add author & fix compilation order |
| 272 | + * readme |
| 273 | + * format |
| 274 | + * fix clippy warnings |
| 275 | + * delete patch |
| 276 | + * remove leftover build.rs |
| 277 | + * fix authors |
| 278 | + * add qos support |
| 279 | + * add spin & change handle handling |
| 280 | + * clippy |
| 281 | + * edit readme |
| 282 | + * Update README.md |
| 283 | + * fix message generation issue |
| 284 | + * remove messages |
| 285 | + * fix fixed size nested array issue |
| 286 | + * delete unused files |
| 287 | + * reset authors |
| 288 | + * remove rcl_sys |
| 289 | + * remove remaining authors & revert readme |
| 290 | + * fix quickstart |
| 291 | + * fix fixed size array warning |
| 292 | + * add rosidl_defaults to repos |
| 293 | + * fix warnings with array generation |
| 294 | + * register the 'rosidl_generator_rs' |
| 295 | + * revert message generation to its initial state |
| 296 | + * add rcl build dependency to rclrs |
| 297 | + * move spin and spin_once from Node to rclrs |
| 298 | + * move publisher sleep at the end of the loop |
| 299 | + * re-add msg to rosidl_generator_rs |
| 300 | + * add TODO for publisher and subscription lifetime |
| 301 | +* Initial implementation |
| 302 | +* Contributors: Daisuke Nishimatsu, Esteve Fernandez, Fawdlstty, Grey, Gérald Lelong, Michael X. Grey, Nathan Wiebe Neufeldt, Nikolai Morin, Sam Privett, Tatsuro Sakaguchi, jhdcs, nnarain |
0 commit comments