canbus icon indicating copy to clipboard operation
canbus copied to clipboard

feat: DBC toolkit for Rust

Open nberlette opened this issue 8 months ago • 1 comments

This is a tracking issue for my upcoming DBC toolkit implemented in Rust. See the monorepo tracking issue for more details and information about the other changes that will be coming in the near future.

[!TIP]

See also the DBC toolkit for TypeScript tracking issue for the TypeScript version of the DBC toolkit, which is also currently under active development alongside this Rust version.

The current plan is to integrate the dbc_wasm crate with the TypeScript API to provide near-native perf for DBC parsing/formatting/validation in the browser and Deno/Bun/Node. I hope you're as excited as I am about this!

Roadmap

This is a rough roadmap for the DBC toolkit and the components that are either planned or in progress as of now. These represent crates that are not yet published to crates.io, but will be in the future. The list is not exhaustive and may change over time as the project evolves.

The names here are subject to change as well. I kindly ask that you do not snatch them up for your own projects in the meantime. Thanks for understanding!

  • [x] dbc, the main crate that uses the other crates to provide a DBC toolkit
  • [x] dbc_core, core functionality for the DBC toolkit
  • [x] dbc_shared, internal shared code used by the other crates
  • [x] dbc_grammar (pest), compliant with Vector GmbH's DBC spec
  • [x] dbc_ast, abstract syntax tree for DBC files
  • [ ] dbc_parser (uses dbc_grammar and dbc_ast), pure Rust parser for DBC files
  • [ ] dbc_macros, procedural macros for defining schemas and generating code
  • [ ] dbc_wasm, WebAssembly bindings for the DBC parser
  • [ ] dbc_cli, command line interface for working with DBC files
  • [ ] dbc_types, type definitions for DBC files

[!IMPORTANT]

While some of the crates above are marked as completed, that does not mean they are fully functional or ready for production use. All of these crates (for the most part) interact with one another to some degree - some more than others. Stay tuned for updates on their progress and functionality.

nberlette avatar Jul 22 '25 10:07 nberlette

Several of us just started Image OxiBUS github org to implement Rust low level comm libraries. It's a community-driven volunteer open source initiative. Several projects already onboarded, and I am working to onboard more:

In progress

  • can-dbc - well know parser with good following

On-boarder

  • automotive_diag by @nyurik (me) - onboarded - definitions for UDS/KWP2000/OBD-II/DoIP/...
  • dbc-data by @tegimeki - onboarded - simple codegen
  • MDGSF/rdbc - onboarded - a thorough DBC parser - merging it with can-dbc might prove a very good path forward.

Would you be interested in joining us to work on it together?

nyurik avatar Oct 02 '25 23:10 nyurik