Skip to content

ADR 0002: Static Libraries as the Internal Default

Status

Accepted.

Context

The engine is early. The first priority is reliable infrastructure and a clean module boundary, not runtime plugin loading or ABI stability.

Decision

Build internal engine modules as static libraries by default. Export installed CMake targets for SDK consumers, starting with Ludus::FoundationBase.

Consequences

Static libraries keep Milestone 0 simple to debug, test, sanitize, and install. They avoid premature decisions about binary compatibility, symbol visibility, plugin lifetimes, and dynamic loading. If future runtime requirements justify shared libraries or plugins, that decision can be made with concrete constraints.