Skip to content

Commit d9e5da2

Browse files
committed
added changelog
Signed-off-by: Esteve Fernandez <[email protected]>
1 parent 4993476 commit d9e5da2

File tree

1 file changed

+268
-0
lines changed

1 file changed

+268
-0
lines changed

rosidl_runtime_rs/CHANGELOG.rst

Lines changed: 268 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,268 @@
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

Comments
 (0)