can-dbc
A parser for the DBC format. The DBC format is used to exchange CAN network data.
10.0.0
5.3M downloads/mo
#4396 most downloaded on crates.io
oxibus/can-dbc
What this package is like to depend on
Last release 1 months ago
15 Jul 2026
Release timing varies
gaps range from 4 weeks to 1.7 years
Most releases are documented
notes for 16 of 23 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
23 releases · first in 2018
7 releases in the last 12 months
see the full history below
Release timeline
23 releases · Dec 2018 to Jul 2026Releases
latest 23-
10.0.015 Jul 2026 -
9.1.011 May 2026 -
9.0.020 Mar 2026 -
8.1.023 Jan 2026 -
8.0.122 Jan 2026 -
8.0.014 Nov 2025Release notes
Open source →Migrate to Pest-based parser, allowing us to parse far greater variety of the .dbc files. Add support for REL parsing.
Added
- use AttributeDefinition for BA_DEF_REL_ (#67)
- [breaking] parse attribute definition parts (#22)
- implement rel parsing (#64)
- skip serializing empty vectors in various structs (#55)
Fixed
- fix Windows CI (#69)
- fix failing tests (#66)
- [breaking] change EnvType variants: 0-int, 1-float, 2-string (#61)
- [breaking] trim whitespace from attribute definitions (#58)
- correctly feature gate default features (#53)
Other
- update parser library reference from nom to Pest
- simplify signal parsing (#68)
- split the attribute_values per type (#63)
- Try to parse all attributes as integer first (#65)
- [breaking] clearer errors, stricter integer types, and API tweaks (#62)
- migrate to can-dbc-pest lexer, parse many new types, parse many new .dbc tests (#48)
- [breaking] remove getters because all fields are public (#60)
- make all fields
puband move structs/enums to individual ast/* files (#59) (#59) - rework testing framework (#57)
- [breaking] remove deprecated
from_strmethod fromDbcimplementation (#50) - [breaking] change Node to hold a single string, i.e.
nodes: Vec<Node>(#54) - move tests to separate files (#52)
- reorganize tests (#49)
Release notes
Open source →Migrate to Pest-based parser, allowing us to parse far greater variety of the .dbc files. Add support for REL parsing.
Added
- use AttributeDefinition for BA_DEF_REL_ (#67)
- [breaking] parse attribute definition parts (#22)
- implement rel parsing (#64)
- skip serializing empty vectors in various structs (#55)
Fixed
- fix Windows CI (#69)
- fix failing tests (#66)
- [breaking] change EnvType variants: 0-int, 1-float, 2-string (#61)
- [breaking] trim whitespace from attribute definitions (#58)
- correctly feature gate default features (#53)
Other
- update parser library reference from nom to Pest
- simplify signal parsing (#68)
- split the attribute_values per type (#63)
- Try to parse all attributes as integer first (#65)
- [breaking] clearer errors, stricter integer types, and API tweaks (#62)
- migrate to can-dbc-pest lexer, parse many new types, parse many new .dbc tests (#48)
- [breaking] remove getters because all fields are public (#60)
- make all fields
puband move structs/enums to individual ast/* files (#59) (#59) - rework testing framework (#57)
- [breaking] remove deprecated
from_strmethod fromDbcimplementation (#50) - [breaking] change Node to hold a single string, i.e.
nodes: Vec<Node>(#54) - move tests to separate files (#52)
- reorganize tests (#49)
-
7.0.020 Oct 2025Release notes
Open source →NOTE:
can-dbchas moved to the OxiBUS GitHub org - a community focused on Rust development for automotive and industrial communication. If you maintain an open-source Rust project in this area, consider joining us - collaboration makes maintenance easier!Breaking
- major struct and enum naming refactoring. See (#45) for the full list of changes.
- remove
from_slice- use cp1252 decoder and pass in a&strinstead (#44) - rename
DBC→Dbcand featurewith-serde→serde(#42)
Added
- added cp1252 decoding support (#44)
Other
- relicense as
MIT OR Apache-2.0(#38) - update README with usage examples and license information (#46)
- move tests to the end (#43)
- move test files to submodule, default with serde feature (#40)
- allow space after message ID (#25)
- upgrade to nom 8 (#36)
- clippy lints
- use
instato test all parsing results - use
clap-derivein example - run
cargo fmt - bump dependencies and minor cleanup
- Simplify tests, test for other escaped characters
- Remove obsolete is_quote function
- Add support for escaped strings within comments
- Derive the Deserialize trait when serde is enabled
- consolidate docs with readme
CI improvements
Release notes
Open source →NOTE:
can-dbchas moved to the OxiBUS GitHub org - a community developing Rust code with focus on communication in automotive and related spaces. If you are maintaining an open source Rust project in this area, consider joining us - it is always easier to maintain projects together!Breaking
- major struct and enum naming refactoring. See (#45) for the full list of changes.
- remove
from_slice- use cp1252 decoder and pass in a&strinstead (#44) - rename
DBC→Dbcand featurewith-serde→serde(#42)
Added
- added cp1252 decoding support (#44)
Other
- relicense as
MIT OR Apache-2.0(#38) - update README with usage examples and license information (#46)
- move tests to the end (#43)
- move test files to submodule, default with serde feature (#40)
- allow space after message ID (#25)
- upgrade to nom 8 (#36)
- clippy lints
- use
instato test all parsing results - use
clap-derivein example - run
cargo fmt - bump dependencies and minor cleanup
- Simplify tests, test for other escaped characters
- Remove obsolete is_quote function
- Add support for escaped strings within comments
- Derive the Deserialize trait when serde is enabled
- consolidate docs with readme
CI improvements
-
6.0.008 Feb 2024Release notes
Open source →6.0.0 (2024-02-08)
- Update dependencies.
- Breaking: PR #13 and #14. Thank you @erzoe and @kistenklaus.
Replace u32 in MessageId with enum type to raise awareness that the raw dbc message ids contain the extended bit.
AddMessageId.raw()which returns the previous raw identifier including the extended id!
Release notes
Open source →- Update dependencies.
- Breaking: PR #13 and #14. Thank you @erzoe and @kistenklaus.
Replace u32 in MessageId with enum type to raise awareness that the raw dbc message ids contain the extended bit.
Add
MessageId.raw()which returns the previous raw identifier including the extended id!
-
5.0.022 Jun 2022Release notes
Open source →5.0.0 (2022-06-22)
- Add support for dbcs with extended multiplex messages. Thank you @pbert519!
- Breaking:
fn message_multiplexor_switchnow returnsResult<Option<&Signal>, Error>instead ofOption<&Signal>.
This is necessary due to the possibility of a message having multiple multiplexor switches.
Release notes
Open source →- Add support for dbcs with extended multiplex messages. Thank you @pbert519!
- Breaking:
fn message_multiplexor_switchnow returnsResult<Option<&Signal>, Error>instead ofOption<&Signal>. This is necessary due to the possibility of a message having multiple multiplexor switches.
-
4.0.015 Nov 2021Release notes
Open source →4.0.0 (2021-11-15)
- Migrate from nom 4.2 to nom 7.1.
- Allow "random" order of elements in DBC. They still have to be in a block e.g. all messages or comments.
- Remove verbose error in returned error
- Return
&strof remaining unparsed content instead ofVec<u8>. - Mark
DBC::from_stras deprecated and replace it with TryFrom::from_str
Release notes
Open source →- Migrate from nom 4.2 to nom 7.1.
- Allow "random" order of elements in DBC. They still have to be in a block e.g. all messages or comments.
- Remove verbose error in returned error
- Return
&strof remaining unparsed content instead ofVec<u8>. - Mark
DBC::from_stras deprecated and replace it with TryFrom::from_str
-
3.0.228 Oct 2020 -
3.0.117 May 2020 -
3.0.025 Nov 2019 -
2.2.114 Nov 2019Nothing published for this version
-
2.2.003 Jun 2019Nothing published for this version
-
2.1.127 May 2019Nothing published for this version
-
2.1.021 May 2019Nothing published for this version
-
2.0.215 May 2019Nothing published for this version
-
2.0.106 May 2019Nothing published for this version
-
2.0.009 Apr 2019 -
1.1.018 Jan 2019Release notes
Open source →- Add optional feature
with-serdeand derive Serialize for structs and enums.
- Add optional feature
-
1.0.115 Jan 2019Release notes
Open source →dbcc
- Add first version of dbc to rust compiler
can-dbc
- Fix plain attribute definition
- Replace singlespace with multispace seperators (less strict)
- Allow multiple signal groups in DBC document
- Accept signal-less messages
- Accept lists in message transmitters
- Lists may now be empty
-
1.0.009 Dec 2018Nothing published for this version