|
| 1 | +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| 2 | +Changelog for package rosidl_runtime_rs |
| 3 | +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| 4 | + |
| 5 | +Forthcoming |
| 6 | +----------- |
| 7 | +* Update for clippy 1.83 (`#441 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/441>`_) |
| 8 | + * Update for clippy 1.83 |
| 9 | + * Update clippy for cfg(test) as well |
| 10 | + * Exclude dependencies from clippy test |
| 11 | + * Fix clippy for rosidl_runtime_rs |
| 12 | + --------- |
| 13 | +* Action message support (`#417 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/417>`_) |
| 14 | + * Added action template |
| 15 | + * Added action generation |
| 16 | + * Added basic create_action_client function |
| 17 | + * dded action generation |
| 18 | + * checkin |
| 19 | + * Fix missing exported pre_field_serde field |
| 20 | + * Removed extra code |
| 21 | + * Sketch out action server construction and destruction |
| 22 | + This follows generally the same pattern as the service server. It |
| 23 | + required adding a typesupport function to the Action trait and pulling |
| 24 | + in some more rcl_action bindings. |
| 25 | + * Fix action typesupport function |
| 26 | + * Add ActionImpl trait with internal messages and services |
| 27 | + This is incomplete, since the service types aren't yet being generated. |
| 28 | + * Split srv.rs.em into idiomatic and rmw template files |
| 29 | + This results in the exact same file being produced for services, |
| 30 | + except for some whitespace changes. However, it enables actions to |
| 31 | + invoke the respective service template for its generation, similar to |
| 32 | + how the it works for services and their underlying messages. |
| 33 | + * Generate underlying service definitions for actions |
| 34 | + Not tested |
| 35 | + * Add runtime trait to get the UUID from a goal request |
| 36 | + C++ uses duck typing for this, knowing that for any `Action`, the type |
| 37 | + `Action::Impl::SendGoalService::Request` will always have a `goal_id` |
| 38 | + field of type `unique_identifier_msgs::msg::UUID` without having to |
| 39 | + prove this to the compiler. Rust's generics are more strict, requiring |
| 40 | + that this be proven using type bounds. |
| 41 | + The `Request` type is also action-specific as it contains a `goal` field |
| 42 | + containing the `Goal` message type of the action. We therefore cannot |
| 43 | + enforce that all `Request`s are a specific type in `rclrs`. |
| 44 | + This seems most easily represented using associated type bounds on the |
| 45 | + `SendGoalService` associated type within `ActionImpl`. To avoid |
| 46 | + introducing to `rosidl_runtime_rs` a circular dependency on message |
| 47 | + packages like `unique_identifier_msgs`, the `ExtractUuid` trait only |
| 48 | + operates on a byte array rather than a more nicely typed `UUID` message |
| 49 | + type. |
| 50 | + I'll likely revisit this as we introduce more similar bounds on the |
| 51 | + generated types. |
| 52 | + * Integrate RMW message methods into ActionImpl |
| 53 | + Rather than having a bunch of standalone traits implementing various |
| 54 | + message functions like `ExtractUuid` and `SetAccepted`, with the |
| 55 | + trait bounds on each associated type in `ActionImpl`, we'll instead add |
| 56 | + these functions directly to the `ActionImpl` trait. This is simpler on |
| 57 | + both the rosidl_runtime_rs and the rclrs side. |
| 58 | + * Add rosidl_runtime_rs::ActionImpl::create_feedback_message() |
| 59 | + Adds a trait method to create a feedback message given the goal ID and |
| 60 | + the user-facing feedback message type. Depending on how many times we do |
| 61 | + this, it may end up valuable to define a GoalUuid type in |
| 62 | + rosidl_runtime_rs itself. We wouldn't be able to utilize the |
| 63 | + `RCL_ACTION_UUID_SIZE` constant imported from `rcl_action`, but this is |
| 64 | + pretty much guaranteed to be 16 forever. |
| 65 | + Defining this method signature also required inverting the super-trait |
| 66 | + relationship between Action and ActionImpl. Now ActionImpl is the |
| 67 | + sub-trait as this gives it access to all of Action's associated types. |
| 68 | + Action doesn't need to care about anything from ActionImpl (hopefully). |
| 69 | + * Add GetResultService methods to ActionImpl |
| 70 | + * Implement ActionImpl trait methods in generator |
| 71 | + These still don't build without errors, but it's close. |
| 72 | + * Replace set_result_response_status with create_result_response |
| 73 | + rclrs needs to be able to generically construct result responses, |
| 74 | + including the user-defined result field. |
| 75 | + * Implement client-side trait methods for action messages |
| 76 | + This adds methods to ActionImpl for creating and accessing |
| 77 | + action-specific message types. These are needed by the rclrs |
| 78 | + ActionClient to generically read and write RMW messages. |
| 79 | + Due to issues with qualified paths in certain places |
| 80 | + (https://github.com/rust-lang/rust/issues/86935), the generator now |
| 81 | + refers directly to its service and message types rather than going |
| 82 | + through associated types of the various traits. This also makes the |
| 83 | + generated code a little easier to read, with the trait method signatures |
| 84 | + from rosidl_runtime_rs still enforcing type-safety. |
| 85 | + * Format the rosidl_runtime_rs::ActionImpl trait |
| 86 | + * Wrap longs lines in rosidl_generator_rs action.rs |
| 87 | + This at least makes the template easier to read, but also helps with the |
| 88 | + generated code. In general, the generated code could actually fit on one |
| 89 | + line for the function signatures, but it's not a big deal to split it |
| 90 | + across multiple. |
| 91 | + * Use idiomatic message types in Action trait |
| 92 | + This is user-facing and so should use the friendly message types. |
| 93 | + * Cleanup ActionImpl using type aliases |
| 94 | + * Formatting |
| 95 | + * Switch from std::os::raw::c_void to std::ffi::c_void |
| 96 | + While these are aliases of each other, we might as well use the more |
| 97 | + appropriate std::ffi version, as requested by reviewers. |
| 98 | + * Clean up rosidl_generator_rs's cmake files |
| 99 | + Some of the variables are present but no longer used. Others were not |
| 100 | + updated with the action changes. |
| 101 | + * Add a short doc page on the message generation pipeline |
| 102 | + This should help newcomers orient themselves around the rosidl\_*_rs |
| 103 | + packages. |
| 104 | + --------- |
| 105 | + Co-authored-by: Esteve Fernandez < [email protected]> |
| 106 | + Co-authored-by: Michael X. Grey < [email protected]> |
| 107 | +* Add in missing nullptr check when calling `std::slice::from_raw_parts` (`#416 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/416>`_) |
| 108 | + * Add in missing nullptr check when calling `std::slice::from_raw_parts` |
| 109 | + * Added missing testcase |
| 110 | +* Fix panic on sequence_init() when size is 0 (`#407 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/407>`_) |
| 111 | +* Add parameter services (`#342 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/342>`_) |
| 112 | + * WIP Adding describe paramater service |
| 113 | + * Implement parameter setting services |
| 114 | + * Restructure and cleanup |
| 115 | + * Implement list_parameters with prefixes |
| 116 | + * Minor cleanups |
| 117 | + * Fix tests, cleanups |
| 118 | + * Fix order of drop calls |
| 119 | + * Add first bunch of unit tests for list and get / set parameters |
| 120 | + * Clear warnings in rclrs |
| 121 | + * Fix clippy, add set atomically tests |
| 122 | + * Add describe parameter and get parameter types tests |
| 123 | + * Minor cleanups, remove several unwraps |
| 124 | + * Remove commented code |
| 125 | + * Address first round of feedback |
| 126 | + * Allow undeclared parameters in parameter getting services |
| 127 | + * Clippy |
| 128 | + * Run rustfmt |
| 129 | + * Update rclrs/src/parameter/service.rs |
| 130 | + Co-authored-by: jhdcs < [email protected]> |
| 131 | + * Change behavior to return NOT_SET for non existing parameters |
| 132 | + * Make use_sim_time parameter read only |
| 133 | + * Format |
| 134 | + * Add a comment to denote why unwrap is safe |
| 135 | + * Use main fmt |
| 136 | + * Add a builder parameter to start parameter services |
| 137 | + --------- |
| 138 | + Co-authored-by: Michael X. Grey < [email protected]> |
| 139 | + Co-authored-by: jhdcs < [email protected]> |
| 140 | +* Use nightly for style check (`#396 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/396>`_) |
| 141 | + * Use nightly for style check |
| 142 | + * Install nightly for cargo +nightly fmt |
| 143 | + * Fix style in examples |
| 144 | + * Update style for rosidl_runtime_rs |
| 145 | + * Add a comment indicating that nightly release is needed for formatting |
| 146 | + --------- |
| 147 | +* Fix Unicode handling in String and WString (`#362 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/362>`_) |
| 148 | + According to https://design.ros2.org/articles/wide_strings.html, the `string` and `wstring` types must use the UTF-8 and UTF-16 encodings (not necessarily enforced), cannot contain null bytes or words (enforced), and, when bounded, are measured in terms of bytes or words. |
| 149 | + Moreover, though the rosidl_runtime_c `U16String` type uses `uint_least16_t`, Rust guarantees the existence of a precise `u16` type, so we should use that instead of `ushort`, which isn't guaranteed to be the same as `uint_least16_t` either. (Rust doesn't support platforms where `uint_least16_t != uint16_t`.) |
| 150 | +* Version 0.4.1 (`#353 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/353>`_) |
| 151 | +* Update GitHub actions (`#352 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/352>`_) |
| 152 | + * Update GitHub actions |
| 153 | + * Downgrade rust-toolchain to the latest stable version (1.74.0) from 1.80.0 |
| 154 | + * Fix issues with latest clippy |
| 155 | + * Fix rustdoc check issue |
| 156 | + * Update Rust toolchain in Dockerfile |
| 157 | +* Allow rustdoc to run without a ROS distribution (`#347 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/347>`_) |
| 158 | + * Allow rustdoc to run without a ROS distribution |
| 159 | + * Extensions to get working |
| 160 | + * Fail if generate_docs feature is not enabled and ROS_DISTRO is not set |
| 161 | + * Fix formatting |
| 162 | + * Fix formatting |
| 163 | + * Make clippy slightly less unhappy |
| 164 | + * Do not run clippy for all features if checking rclrs |
| 165 | + * Clean up rcl_bindings.rs |
| 166 | + * Fix comparison |
| 167 | + * Avoid warnings for rosidl_runtime_rs |
| 168 | + * Avoid running cargo test with all features for rclrs |
| 169 | + * Ignore rosidl_runtime_rs for cargo test |
| 170 | + * rosidl_runtime_rs does not have a dyn_msg feature |
| 171 | + * Add comment about the generate_docs feature |
| 172 | + --------- |
| 173 | + Co-authored-by: carter < [email protected]> |
| 174 | +* Version 0.4.0 (`#346 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/346>`_) |
| 175 | +* Revert "Version 0.4.0 (`#343 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/343>`_)" (`#344 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/344>`_) |
| 176 | + This reverts commit 8948409e0c6d9ced291b5cffda82036d067bd36d. |
| 177 | +* Version 0.4.0 (`#343 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/343>`_) |
| 178 | +* - Upgraded bindgen to 0.66.1 (`#323 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/323>`_) |
| 179 | + - Upgraded libloading to 0.8 |
| 180 | + - Added instructions to rerun build scripts if dependent files have changed |
| 181 | + - Enabled bindgen to invalidate the built crate whenever any transitively included header files from the wrapper change |
| 182 | + - Removed some default true options from our bindgen builder |
| 183 | + Co-authored-by: Sam Privett < [email protected]> |
| 184 | +* Improve efficiency of deserializing strings (`#300 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/300>`_) |
| 185 | +* Extend string types (`#293 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/293>`_) |
| 186 | +* Remove libc dependencies (`#284 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/284>`_) |
| 187 | +* Version 0.3.1 (`#285 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/285>`_) |
| 188 | +* Add TYPE_NAME constant to messages and make error fields public (`#277 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/277>`_) |
| 189 | +* Format all code with group_imports = StdExternalCrate (`#272 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/272>`_) |
| 190 | +* Add README files for rclrs and rosidl_runtime_rs (`#273 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/273>`_) |
| 191 | + These files will be shown by crates.io. |
| 192 | +* Bump package versions to 0.3 (`#274 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/274>`_) |
| 193 | +* Generalize callbacks for subscriptions (`#260 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/260>`_) |
| 194 | + * Generalize callbacks to subscriptions |
| 195 | + By implementing a trait (SubscriptionCallback) on valid function signatures, |
| 196 | + and making subscriptions accept callbacks that implement this trait, we can now |
| 197 | + * Receive both plain and boxed messages |
| 198 | + * Optionally receive a MessageInfo along with the message, as the second argument |
| 199 | + * Soon, receive a loaned message instead of an owned one |
| 200 | + This corresponds to the functionality in any_subscription_callback.hpp in rclcpp. |
| 201 | +* Add support for loaned messages (`#212 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/212>`_) |
| 202 | +* Implement Message for Box<T: Message> (`#235 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/235>`_) |
| 203 | +* Fixes for releasing to crates.io (`#231 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/231>`_) |
| 204 | + * Fixups for releasing to crates.io |
| 205 | + * Removed std_msgs as test dependency. Fix rosidl_runtime_rs version |
| 206 | + * Removed test |
| 207 | + * Removed test |
| 208 | +* Added support for clients and services (`#146 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/146>`_) |
| 209 | + * Added support for clients and services |
| 210 | +* Fix a portability problem in rosidl_runtime_rs::String (`#219 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/219>`_) |
| 211 | + Previously, it was assumed by the $string_conversion_func, for instance, that the output of deref() would be an unsigned integer. |
| 212 | +* Add unit testing (`#84 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/84>`_) |
| 213 | + * Copied tests from jhdcs' fork |
| 214 | + * Ran cargo fmt |
| 215 | + * Run clippy on tests as well |
| 216 | + * Make Clippy happy |
| 217 | + * Fix rustfmt warning |
| 218 | + * Added std_msgs to package.xml |
| 219 | + * Disable deref_nullptr warning for generated code |
| 220 | + * Include Soya-Onishi's changes |
| 221 | + * Fix Node::new call |
| 222 | + * Fix spelling mistakes |
| 223 | + Co-authored-by: jhdcs < [email protected]> |
| 224 | + * Fix spelling mistakes |
| 225 | + Co-authored-by: jhdcs < [email protected]> |
| 226 | + * Fix spelling mistakes |
| 227 | + Co-authored-by: jhdcs < [email protected]> |
| 228 | + * Fix formatting |
| 229 | + Co-authored-by: jhdcs < [email protected]> |
| 230 | +* Add Nikolai and Jacob to authors in Cargo.toml and maintainers in package.xml (`#133 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/133>`_) |
| 231 | +* Make all the things Send, and messages Sync as well (`#171 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/171>`_) |
| 232 | + This is required to make multithreading work. For instance, calling publish() on a separate thread doesn't work without these impls. |
| 233 | +* Rename RMW-compatible to RMW-native (`#159 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/159>`_) |
| 234 | +* Add serde support to messages (`#131 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/131>`_) |
| 235 | +* Add comments explaining each dependency (`#122 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/122>`_) |
| 236 | +* Removed support for no_std (`#109 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/109>`_) |
| 237 | + * Removed support for no_std |
| 238 | + * Removed more no_std dependencies |
| 239 | + * Removed more no_std dependencies |
| 240 | + * Removed more no_std dependencies |
| 241 | + * Removed downcast |
| 242 | + * Removed TryFrom, not needed with Rust 2021 |
| 243 | + * Fix visibility of modules |
| 244 | +* Document all public items (`#94 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/94>`_) |
| 245 | +* Bump every package to version 0.2 (`#100 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/100>`_) |
| 246 | +* Give subscription callback the owned message (`#92 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/92>`_) |
| 247 | + Also remove unused dependency from rosidl_runtime_rs |
| 248 | +* Enable Clippy in CI (`#83 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/83>`_) |
| 249 | +* Message generation refactoring (`#80 <https://github.com/ros2-rust/rosidl_runtime_rs/issues/80>`_) |
| 250 | + 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. |
| 251 | + Changes: |
| 252 | + - The "rsext" library is deleted |
| 253 | + - Unused messages in "rosidl_generator_rs" are deleted |
| 254 | + - There is a new package, "rosidl_runtime_rs", see below |
| 255 | + - The RMW-compatible messages from C, which do not require an extra conversion step, are exposed in addition to the "idiomatic" messages |
| 256 | + - Publisher and subscription are changed to work with both idiomatic and rmw types, through the unifying `Message` trait |
| 257 | + On `rosidl_runtime_rs`: This package is the successor of `rclrs_msg_utilities` package, but doesn't have much in common with it anymore. |
| 258 | + 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. |
| 259 | + 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. |
| 260 | + The memory for the (non-pretty) message types is managed by the C allocator. |
| 261 | + Not yet implemented: |
| 262 | + - long double |
| 263 | + - constants |
| 264 | + - Services/clients |
| 265 | + - @verbatim comments |
| 266 | + - ndarray for sequences/arrays of numeric types |
| 267 | + - implementing `Eq`, `Ord` and `Hash` when a message contains no floats |
| 268 | +* Contributors: Esteve Fernandez, Grey, Luca Della Vedova, Nathan Wiebe Neufeldt, Nikolai Morin, Oscarchoi, Raghav Mishra, Sam Privett, Tatsuro Sakaguchi |
0 commit comments