From ecc6c8f54296d42cce70262b4ff4ffb18b7eec7e Mon Sep 17 00:00:00 2001 From: carter Date: Tue, 24 Sep 2024 09:14:44 -0600 Subject: [PATCH] Releaseing v0.11.0 --- CHANGELOG.md | 51 ++++++++++++++++++----------- README.md | 6 ++-- roslibrust/Cargo.toml | 6 ++-- roslibrust_codegen/Cargo.toml | 2 +- roslibrust_codegen_macro/Cargo.toml | 4 +-- 5 files changed, 41 insertions(+), 28 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 459cb72..c88c820 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +### Fixed + +### Changed + +## 0.11.0 + +### Added + - ROS1 Native Publishers now support latching behavior - The XML RPC client for interacting directly with the rosmaster server has been exposed as a public API - Experimental: Initial support for writing generic clients that can be compile time specialized for rosbridge or ros1 @@ -43,6 +51,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added ### Fixed + - Bug with message_definitions provided by Publisher in the connection header not being the fully expanded definition. - Bug with ROS1 native subscribers not being able to receive messages larger than 4096 bytes. @@ -53,6 +62,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added ### Fixed + - Bug with ros1 native publishers not parsing connection headers correctly ### Changed @@ -60,6 +70,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## 0.10.0 - July 5th, 2024 ### Added + - ROS1 native service servers and service clients are now supported (experimental feature) ### Fixed @@ -87,45 +98,45 @@ crates that were previously adding dependencies on serde, serde-big-array, and s ### Changed - - The function interface for top level generation functions in `roslibrust_codegen` have been changed to include the list of dependent +- The function interface for top level generation functions in `roslibrust_codegen` have been changed to include the list of dependent filesystem paths that should trigger re-running code generation. Note: new files added to the search paths will not be automatically detected. - [Breaking Change] Codegen now generates fixed sized arrays as arrays [T; N] instead of Vec - - Removed `find_and_generate_ros_messages_relative_to_manifest_dir!` this proc_macro was changing the current working directory of the compilation job resulting in a variety of strange compilation behaviors. Build.rs scripts are recommended for use cases requiring fine grained control of message generation. - - The function interface for top level generation functions in `roslibrust_codegen` have been changed to include the list of dependent filesystem paths that should trigger re-running code generation. Note: new files added to the search paths will not be automatically detected. - - Refactor the `ros1::node` module into separate smaller pieces. This should be invisible externally (and no changes to examples were required). +- Removed `find_and_generate_ros_messages_relative_to_manifest_dir!` this proc_macro was changing the current working directory of the compilation job resulting in a variety of strange compilation behaviors. Build.rs scripts are recommended for use cases requiring fine grained control of message generation. +- The function interface for top level generation functions in `roslibrust_codegen` have been changed to include the list of dependent filesystem paths that should trigger re-running code generation. Note: new files added to the search paths will not be automatically detected. +- Refactor the `ros1::node` module into separate smaller pieces. This should be invisible externally (and no changes to examples were required). ## 0.8.0 - October 4th, 2023 ### Added - - Experimental support for ROS1 native communication behind the `ros1` feature flag - - Generation of C++ source added via `roslibrust_genmsg` along with arbitrary languages via passed in templates - - Generation of Rust source for actions - - Example for custom generic message usage with rosbridge - - Example for async native ROS1 listener - - Example for async native ROS1 publisher +- Experimental support for ROS1 native communication behind the `ros1` feature flag +- Generation of C++ source added via `roslibrust_genmsg` along with arbitrary languages via passed in templates +- Generation of Rust source for actions +- Example for custom generic message usage with rosbridge +- Example for async native ROS1 listener +- Example for async native ROS1 publisher ### Fixed - - Incorrect handling of ROS1 message string constants +- Incorrect handling of ROS1 message string constants ### Changed - - `crawl` function in `roslibrust_codegen` updated to a more flexible API - - Overhaul of error handling in roslibrust_codegen to bubble errors up, and remove use of panic! and unwrap(). Significantly better error messages should be produced from proc_macros and build.rs files. Direct usages of the API will need to be updated to handle the returned error type. - - RosMessageType trait now has associated constants for MD5SUM and DEFINITION to enable ROS1 native support. These constants are optional at this time with a default value of "" provided. +- `crawl` function in `roslibrust_codegen` updated to a more flexible API +- Overhaul of error handling in roslibrust_codegen to bubble errors up, and remove use of panic! and unwrap(). Significantly better error messages should be produced from proc_macros and build.rs files. Direct usages of the API will need to be updated to handle the returned error type. +- RosMessageType trait now has associated constants for MD5SUM and DEFINITION to enable ROS1 native support. These constants are optional at this time with a default value of "" provided. ## 0.7.0 - March 13, 2022 ### Added - - Support for default field values in ROS2 messages - - Added public APIs for getting message data from search and for generating Rust code given message data in roslibrust_codegen - - More useful logs available when running codegen - - Refactor some of the public APIs and types in roslibrust_codegen (concept of `ParsedMessageFile` vs `MessageFile`) - - Added a method `get_md5sum` to `MessageFile` - - Additional code generation API and macro which excludes `ROS_PACKAGE_PATH` +- Support for default field values in ROS2 messages +- Added public APIs for getting message data from search and for generating Rust code given message data in roslibrust_codegen +- More useful logs available when running codegen +- Refactor some of the public APIs and types in roslibrust_codegen (concept of `ParsedMessageFile` vs `MessageFile`) +- Added a method `get_md5sum` to `MessageFile` +- Additional code generation API and macro which excludes `ROS_PACKAGE_PATH` ### Fixed diff --git a/README.md b/README.md index 08b81d8..d4eeca5 100644 --- a/README.md +++ b/README.md @@ -9,13 +9,15 @@ This package aims to provide a convenient "async first" library for interacting Currently this packaged provides support for both ROS1 native communication (TCPROS) and rosbridge's protocol which provides support for both ROS1 and ROS2 albeit with some overhead. -Information about the protocol can be found [here](https://github.com/RobotWebTools/rosbridge_suite). +Information about the rosbridge protocol can be found [here](https://github.com/RobotWebTools/rosbridge_suite). Note on documentation: All information about the crate itself (examples, documentation, tutorials, etc.) lives in the source code and can be viewed on [docs.rs](https://docs.rs/roslibrust). This readme is for "Meta" information about developing for the crate. -Fully Supported via rosbridge: Noetic, Galactic, Humble, Iron, +Fully Supported via rosbridge: Noetic, Galactic, Humble, Iron. + +Fully Supported via ROS1 native: Noetic ## Code Generation of ROS Messages diff --git a/roslibrust/Cargo.toml b/roslibrust/Cargo.toml index 645bf45..377b622 100644 --- a/roslibrust/Cargo.toml +++ b/roslibrust/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "roslibrust" -version = "0.10.2" +version = "0.11.0" authors = ["carter ", "ssnover "] edition = "2021" license = "MIT" @@ -34,8 +34,8 @@ tokio = { version = "1.20", features = [ ] } tokio-tungstenite = { version = "0.17" } uuid = { version = "1.1", features = ["v4"] } -roslibrust_codegen_macro = { path = "../roslibrust_codegen_macro", version = "0.10.0" } -roslibrust_codegen = { path = "../roslibrust_codegen", version = "0.10.0" } +roslibrust_codegen_macro = { path = "../roslibrust_codegen_macro", version = "0.11.0" } +roslibrust_codegen = { path = "../roslibrust_codegen", version = "0.11.0" } reqwest = { version = "0.11", optional = true } # Only used with native ros1 serde_xmlrpc = { version = "0.2", optional = true } # Only used with native ros1 serde_rosmsg = { version = "0.2", optional = true } # Only used with native ros1 diff --git a/roslibrust_codegen/Cargo.toml b/roslibrust_codegen/Cargo.toml index ffb2d46..b1f37d1 100644 --- a/roslibrust_codegen/Cargo.toml +++ b/roslibrust_codegen/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "roslibrust_codegen" -version = "0.10.0" +version = "0.11.0" edition = "2021" authors = ["carter ", "ssnover "] license = "MIT" diff --git a/roslibrust_codegen_macro/Cargo.toml b/roslibrust_codegen_macro/Cargo.toml index 0db4124..937dd17 100644 --- a/roslibrust_codegen_macro/Cargo.toml +++ b/roslibrust_codegen_macro/Cargo.toml @@ -2,7 +2,7 @@ name = "roslibrust_codegen_macro" edition = "2021" description = "Provides macro-based message generation for roslibrust" -version = "0.10.0" +version = "0.11.0" repository = "https://github.com/Carter12s/roslibrust" license = "MIT" readme = "README.md" @@ -16,5 +16,5 @@ proc-macro2 = "1.0" quote = "1.0" # Note: finds path version when building locally, and crates.io version when publishing # https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#multiple-locations -roslibrust_codegen = { path = "../roslibrust_codegen", version = "0.10.0" } +roslibrust_codegen = { path = "../roslibrust_codegen", version = "0.11.0" } syn = "1.0"