Dagger evaluates file dependencies in a directed-acyclic-graph (DAG) like GNU make, but timestamps or hashes can be used on a per-file basis when evaluating which file nodes are up to date or stale. Use fast timestamp comparisons on large files when hashing is too slow, and hashing on small files. When hashing is used, it's stored in either a text file or sqlite database (in-memory at runtime is optional). Files can be forced as stale or uptodate. Dagger can be used as a building block...