Skip to content

std::byte take 2#937

Draft
InvincibleRMC wants to merge 6 commits intorollingfrom
rmc/std--byte2
Draft

std::byte take 2#937
InvincibleRMC wants to merge 6 commits intorollingfrom
rmc/std--byte2

Conversation

@InvincibleRMC
Copy link
Copy Markdown
Contributor

@InvincibleRMC InvincibleRMC commented Mar 6, 2026

Description

Fixes TODO: To migrate to std::byte

Is this user-facing behavior change?

Yes this will emits lots of deprecation warnings but should be compile compatible.

Did you use Generative AI?

Additional Information

Signed-off-by: Michael Carlstrom <rmc@carlstrom.com>
@InvincibleRMC
Copy link
Copy Markdown
Contributor Author

Pulls: #937
Gist: https://gist.githubusercontent.com/InvincibleRMC/90c7871e4a6ec41c4a4ed4a3b2fa6121/raw/1b3b7fdd8ce51a7195dea6e47ca861c907f33a2a/ros2.repos
BUILD args: --continue-on-error --packages-above-and-dependencies rosidl_generator_cpp rosidl_runtime_cpp
TEST args: --packages-above rosidl_generator_cpp rosidl_runtime_cpp
ROS Distro: rolling
Job: ci_launcher
ci_launcher ran: https://ci.ros2.org/job/ci_launcher/18370

  • Linux Build Status
  • Linux-aarch64 Build Status
  • Linux-rhel Build Status
  • Windows Build Status

Signed-off-by: Michael Carlstrom <rmc@carlstrom.com>
Signed-off-by: Michael Carlstrom <rmc@carlstrom.com>
Signed-off-by: Michael Carlstrom <rmc@carlstrom.com>
@InvincibleRMC
Copy link
Copy Markdown
Contributor Author

Pulls: #937
Gist: https://gist.githubusercontent.com/InvincibleRMC/e482ece444e048053d3ce241cffde06c/raw/1b3b7fdd8ce51a7195dea6e47ca861c907f33a2a/ros2.repos
BUILD args: --continue-on-error --packages-above-and-dependencies rosidl_generator_cpp rosidl_generator_tests rosidl_runtime_cpp rosidl_typesupport_introspection_cpp rosidl_typesupport_introspection_tests
TEST args: --packages-above rosidl_generator_cpp rosidl_generator_tests rosidl_runtime_cpp rosidl_typesupport_introspection_cpp rosidl_typesupport_introspection_tests
ROS Distro: rolling
Job: ci_launcher
ci_launcher ran: https://ci.ros2.org/job/ci_launcher/18371

  • Linux Build Status
  • Linux-aarch64 Build Status
  • Linux-rhel Build Status
  • Windows Build Status

Signed-off-by: Michael Carlstrom <rmc@carlstrom.com>
@InvincibleRMC
Copy link
Copy Markdown
Contributor Author

Pulls: #937
Gist: https://gist.githubusercontent.com/InvincibleRMC/1c905ecfa0619d75318011c771e142ab/raw/1b3b7fdd8ce51a7195dea6e47ca861c907f33a2a/ros2.repos
BUILD args: --continue-on-error --packages-above-and-dependencies rosidl_generator_cpp rosidl_generator_tests rosidl_runtime_cpp rosidl_typesupport_introspection_cpp rosidl_typesupport_introspection_tests
TEST args: --packages-above rosidl_generator_cpp rosidl_generator_tests rosidl_runtime_cpp rosidl_typesupport_introspection_cpp rosidl_typesupport_introspection_tests
ROS Distro: rolling
Job: ci_launcher
ci_launcher ran: https://ci.ros2.org/job/ci_launcher/18373

  • Linux Build Status
  • Linux-aarch64 Build Status
  • Linux-rhel Build Status
  • Windows Build Status

Signed-off-by: Michael Carlstrom <rmc@carlstrom.com>
@InvincibleRMC
Copy link
Copy Markdown
Contributor Author

Pulls: #937
Gist: https://gist.githubusercontent.com/InvincibleRMC/dbd3ed9468cc2c214da334b104cacae0/raw/1b3b7fdd8ce51a7195dea6e47ca861c907f33a2a/ros2.repos
BUILD args: --continue-on-error --packages-above-and-dependencies rosidl_generator_cpp rosidl_generator_tests rosidl_runtime_cpp rosidl_typesupport_introspection_cpp rosidl_typesupport_introspection_tests
TEST args: --packages-above rosidl_generator_cpp rosidl_generator_tests rosidl_runtime_cpp rosidl_typesupport_introspection_cpp rosidl_typesupport_introspection_tests
ROS Distro: rolling
Job: ci_launcher
ci_launcher ran: https://ci.ros2.org/job/ci_launcher/18381

  • Linux Build Status
  • Linux-aarch64 Build Status
  • Linux-rhel Build Status
  • Windows Build Status

@InvincibleRMC
Copy link
Copy Markdown
Contributor Author

Pulls: #937, ros2/rosidl_typesupport_fastrtps#143
Gist: https://gist.githubusercontent.com/InvincibleRMC/40a51023beb67e54308e685de58cb34a/raw/352e0fbf52a7d3ea0f07a303d860a9ac440b217d/ros2.repos
BUILD args: --continue-on-error --packages-above-and-dependencies rosidl_generator_cpp rosidl_generator_tests rosidl_runtime_cpp rosidl_typesupport_introspection_cpp rosidl_typesupport_introspection_tests rosidl_typesupport_fastrtps_cpp
TEST args: --packages-above rosidl_generator_cpp rosidl_generator_tests rosidl_runtime_cpp rosidl_typesupport_introspection_cpp rosidl_typesupport_introspection_tests rosidl_typesupport_fastrtps_cpp
ROS Distro: rolling
Job: ci_launcher
ci_launcher ran: https://ci.ros2.org/job/ci_launcher/18384

  • Linux Build Status
  • Linux-aarch64 Build Status
  • Linux-rhel Build Status
  • Windows Build Status

@InvincibleRMC
Copy link
Copy Markdown
Contributor Author

Pulls: #937, ros2/rosidl_typesupport_fastrtps#143
Gist: https://gist.githubusercontent.com/InvincibleRMC/bfb57b75e7610b75e6125de561634834/raw/352e0fbf52a7d3ea0f07a303d860a9ac440b217d/ros2.repos
BUILD args: --continue-on-error --packages-above-and-dependencies rosidl_generator_cpp rosidl_generator_tests rosidl_runtime_cpp rosidl_typesupport_introspection_cpp rosidl_typesupport_introspection_tests rosidl_typesupport_fastrtps_cpp
TEST args: --packages-above rosidl_generator_cpp rosidl_generator_tests rosidl_runtime_cpp rosidl_typesupport_introspection_cpp rosidl_typesupport_introspection_tests rosidl_typesupport_fastrtps_cpp
ROS Distro: rolling
Job: ci_launcher
ci_launcher ran: https://ci.ros2.org/job/ci_launcher/18385

  • Linux Build Status
  • Linux-aarch64 Build Status
  • Linux-rhel Build Status
  • Windows Build Status

using Base::Base;

operator std::vector<std::byte> &() {
return *reinterpret_cast<std::vector<std::byte> *>(this);
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looked suspect, so I verified, and I'm pretty sure this is undefined behavior. You can reinterpret cast the elements of the vector, but not the entire vector structure itself because C++.

If we move forward to C++20, this would be a good use of span.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We already discussed C++20, so maybe

Image

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah. Its super cooked on C++17. Also without template specialization coercion there is no way to make this a complete no breaking change. Not sure how much of a problem this is in the practical sense but did notice it which is why type support had to be updated. Maybe the proper method is just add a second byte field then deprecate the old one? But also maybe it's not worth the hassle to be technically correct.

@InvincibleRMC
Copy link
Copy Markdown
Contributor Author

Pulls: #937, ros2/demos#777
Gist: https://gist.githubusercontent.com/InvincibleRMC/591d30b32eb8248ede602c9fe983677c/raw/18abe2a0c42e11d47e0e7e7758c492533ce55070/ros2.repos
BUILD args: --continue-on-error --packages-above-and-dependencies lifecycle_py
TEST args: --packages-above lifecycle_py
ROS Distro: rolling
Job: ci_launcher
ci_launcher ran: https://ci.ros2.org/job/ci_launcher/18421

  • Linux Build Status
  • Linux-aarch64 Build Status
  • Linux-rhel Build Status
  • Windows Build Status

@InvincibleRMC
Copy link
Copy Markdown
Contributor Author

I think the easiest way would be to use #945. And just add a new_byte type. And use deprecation to transition users. Rather than do this fancy stuff with coerecion.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants