Skip to content

Commit d57da4b

Browse files
committed
Added CHANGELOG.rst
Signed-off-by: Esteve Fernandez <esteve@apache.org>
1 parent 0c683f5 commit d57da4b

File tree

1 file changed

+302
-0
lines changed

1 file changed

+302
-0
lines changed

rosidl_generator_rs/CHANGELOG.rst

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

Comments
 (0)