ros / console_bridge

A ROS-independent package for logging that seamlessly pipes into rosconsole/rosout for ROS-dependent packages.
BSD 3-Clause "New" or "Revised" License
22 stars 62 forks source link

Use c++11 instead of boost #21

Closed scpeters closed 8 years ago

scpeters commented 9 years ago

This package uses just a very small amount of boost, much less than urdfdom (related issue: https://github.com/ros/urdfdom/issues/62 ). So it should be easier to use this as a test case for how to start the move to c++11. I have made the necessary changes in https://github.com/scpeters/console_bridge/commit/255abf61ee982fd4f054a1b2cb91b4dd39cb87a0 but I wanted to wait before submitting a pull request to ask what the new branch should be called and what numbering to use.

Some questions:

@wjwwood

scpeters commented 9 years ago

Finding the correct version will be a challenge since neither this nor urdfdom nor urdfdom_headers create cmake version config files. Also, the cmake config file for urdfdom currently calls find_package without a version specified when searching for its dependencies (urdfdom_headers and console_bridge).

In ign-math (used by gazebo and sdformat), we have been appending the major version number to the name of the pkg-config and cmake config files. I'm not sure if that's desired in this case.

dirk-thomas commented 9 years ago

The current target platforms for ROS are defined in REP 3 (http://www.ros.org/reps/rep-0003.html). For all previous ROS releases C++03 was the minimum requirement and and that's why it can currently not use C++11.

Therefore it can only be considered for future releases. You might want to start a discussion about the minimum C++ version required for the next ROS version (k-turtle, May 2016). But please keep in mind that this implies that ROS would not be compilable anymore on platform which don't have a C++11 compatible compiler.

scpeters commented 9 years ago

The default version of gcc in Ubuntu 12.04 (Precise) doesn't support c++11, but it is supported in 14.04 (trusty) and up. Since the minimum supported Ubuntu version for Jade is trusty, perhaps we could do it for K-turtle?

Should I start a thread on ros-users or is there a better venue?

tfoote commented 9 years ago

I'd suggest a PR to REP 3 with a compatible proposal for kinetic and announcement of the discussion on ros-users@ to let people know the discussion is going on.

dirk-thomas commented 9 years ago

After looking briefly in the code it looks like that console_bridge is using boost only internally in cpp files and does not expose it in the headers. If the usage of C++11 gets accepted that should be easy to update.

In other cases where the types are being exposed through the API it might be significantly more effort to update if every code using the API needs to be updated to.

scpeters commented 9 years ago

Indeed, I have started a discussion at https://github.com/ros/urdfdom/issues/62 where boost shared pointers are used in the public API.

jacquelinekay commented 8 years ago

In October, the ros2 branch implemented these changes:

https://github.com/ros/console_bridge/commit/787c4876ce75b1a6c084784439942227781c1b07

We've also decided that C++11 compatibility will be required for Kinetic.

So it sounds like the way forward for this issue will be easy enough.

scpeters commented 8 years ago

@jacquelinekay thanks for the pointer to the ros2 branch. I'll add those changes to #25

scpeters commented 8 years ago

fixed by #25