rosidl
The ROS 2 package set that parses .msg, .srv and .action interface definition files and generates the C and C++ code robots use to construct and pass those messages.
rosidl is a core ROS 2 package providing the toolchain for ROS's interface definition language: rosidl_adapter parses .msg, .srv and .action files and converts them to an intermediate .idl format, which rosidl_parser then reads; CMake integration in rosidl_cmake invokes the code generators during a build. Separate generator packages produce the interface types in C and in C++, and further packages generate type descriptions and support for introspecting messages dynamically at runtime rather than only through generated static types.
Runtime support packages, rosidl_runtime_c and rosidl_runtime_cpp, provide the definitions, initialization and helper macros that generated code depends on, along with a typesupport interface that other rosidl typesupport packages implement.
It is written in C++ and licensed under Apache-2.0, as one of the ros_core packages.