Skip to content

approach idea: focus on the core Rust implementation #43

Description

@carlocorradini

I really like zerodds and the vision behind its broader ecosystem, including multi-language interoperability, CORBA integration, and related components.
However, in its current state (this is purely my personal opinion, so take it accordingly) I believe it would be more beneficial to focus primarily on Rust and the core crates.

Rust is still relatively new within the DDS ecosystem, and there is a strong need to establish a solid foundation first.
Once the Rust implementation is mature, well-tested and performant, it will be much easier to expand into other areas such as C/C++ bindings and additional components.

Focusing on Rust would not only help build a robust and reliable foundation, but also reduce the risk of spending limited development resources on crates or features that may see little to no adoption (nim programming language bindings).
Given that the community is still relatively small, concentrating efforts on the most critical pieces could provide the greatest long-term benefit.

I think the following crates are the most fundamental building blocks of the Rust ecosystem and deserve the highest priority:

  • DDS core components such as dcps, security, serialization, deserialization, and the other foundational building blocks of the stack
  • A DdsType macro for Rust to generate type information for all supported IDL types (struct, enum, union, etc.)
  • An IDL generator that translates IDL files into Rust files (or merges everything into a single flat file). The generator should "simply" generate the corresponding Rust's modules, structs, enums, etc., with all the required #[derive(...)] attributes, including the DdsType derive described above. This approach keeps the DdsType trait implementation generation in a single crate and significantly simplifies the IDL generator
  • An IDL build crate to generate Rust code at build time (build.rs). For simplification it wraps the IDL compiler

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions