As you may know, we’re working on our own graphics engine, the “Sphere Engine”. Such an engine is a complex piece of software, and with any complex piece of software – at some point – you need to find a way to manage its logical parts and dependencies between them. In fact, we considered this to be so important that we dedicated a whole (open-source) Rust crate to the elegant management of logical dependencies: Daab.
First of all, we need to understand the implications of a dependency between two components. If component A depends on component B, component A needs to be updated when changes to B are made. To account for updating components in such a case, Daab differentiates between two layers: The Builder layer and the Artifact layer.
Dependencies are usually expressed in a so-called Directed Acyclic Graph, or DAG in short. Daab is no exception to this. It also uses a DAG to represent logical dependencies between logical components.



