Skip to content

Commit

Permalink
Releaseing v0.11.0
Browse files Browse the repository at this point in the history
  • Loading branch information
carter committed Sep 24, 2024
1 parent 676d23f commit ecc6c8f
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 28 deletions.
51 changes: 31 additions & 20 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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.

Expand All @@ -53,13 +62,15 @@ 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

## 0.10.0 - July 5th, 2024

### Added

- ROS1 native service servers and service clients are now supported (experimental feature)

### Fixed
Expand Down Expand Up @@ -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<T>
- 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

Expand Down
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
6 changes: 3 additions & 3 deletions roslibrust/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "roslibrust"
version = "0.10.2"
version = "0.11.0"
authors = ["carter <[email protected]>", "ssnover <[email protected]>"]
edition = "2021"
license = "MIT"
Expand Down Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion roslibrust_codegen/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "roslibrust_codegen"
version = "0.10.0"
version = "0.11.0"
edition = "2021"
authors = ["carter <[email protected]>", "ssnover <[email protected]>"]
license = "MIT"
Expand Down
4 changes: 2 additions & 2 deletions roslibrust_codegen_macro/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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"

0 comments on commit ecc6c8f

Please sign in to comment.