RustDDS – Data Distribution Service implemented in Rust
RustDDS is a networking middleware implemented in Rust programming language. Atostek’s RustDDS is now freely available for all robot developers.
DDS is an essential part of ROS 2 based robot applications. Unfortunately there were no pure Rust DDS implementations available, so we decided to develop one. The Rust programming language is designed with application performance and safety in mind. It provides C++ performance but is much less prone to programming errors. This makes Rust ideal for safety and performance critical applications like robotics.
We want to make adopting Rust easier by releasing RustDDS under an open source license.
DDS is a general communication protocol and can be used in a wide variety of applications besides robotics. Atostek’s RustDDS is developed with robotics and especially ROS 2 in mind, but it does not implement a full DDS specification. It also favors some Rust conventions for example in naming and memory management, so the API has some deviations from DDS. On top of RustDDS, Atostek has also developed the ros2-client library which provides functionality similiar to rclcpp and rclpy packages in ROS 2.
RustDDS is published under Apache 2.0 license. The license is permissive and grants rights to use, copy, distribute, modify, sell, sub-license and make derivative products. Basically, you can do anything you want with RustDDS, only thing what is required is to include original copyright text in the licensed files and if you modify the files somehow, mark the modified parts. We also encourage you to contribute in development and support of RustDDS!
RustDDS is available on crates.io.