Building block view¶
arc42 §4 — the building blocks that realise the toolchain, one crate per block. The dependency graph is Toolchain layering (crate d... (ARCH_0081); this page records each crate’s job, public surface, and the dependencies it is and is not allowed to carry.
The diagram below reads the same crates as a public-API pipeline: each
layer’s output type is the next layer’s input, from .dbc bytes
through to the WireType surface the generated code implements.
graph LR
dbc["DBC text<br/>&str"]
c["BB_0117 taktora-idl-core<br/>Module / Struct / Field IR<br/>validate() + max_serialized_len()"]
w["BB_0118 taktora-idl-wire<br/>WireType + pack/unpack<br/>(no_std, no deps)"]
d["BB_0119 taktora-idl-dbc<br/>parse() → DbcDatabase<br/>lower() → (Module, DbcLayout)"]
g["BB_0114 taktora-idl-codegen<br/>resolve() + generate<B><br/>naming + collision policy"]
b["BB_0115 taktora-idl-codegen-can<br/>CanBackend: MessageBackend impl"]
t["BB_0116 taktora-idl-codegen-can-tests<br/>build.rs round-trip harness"]
dbc -->|"parse()"| d
c -.->|"IR types"| d
d -->|Module| g
d -->|DbcLayout| b
g -->|ResolvedModule| b
b -->|TokenStream| t
w -.->|generated code calls| t
The bounded message-type IR. Pure data carriers: |
The runtime crate. |
The DBC frontend. |
The plane-generic codegen layer. Owns the |
The concrete CAN backend. |
The build-time verification harness ( |