UNDER THE HOOD
Architecture
WeaveC is organised as three C++ libraries and two thin command-line tools. The libraries form a strict dependency chain; the arrows below point from a layer to what it may depend on.
┌──────────────────────┐ ┌──────────────────────────┐ │ tools/weavec │ │ tools/weavec-cc │ │ (libTooling) │ │ (drop-in C compiler) │ └──────────┬───────────┘ └────────────┬─────────────┘ └───────────┬───────────────┘ ▼ ┌──────────────────────────┐ │ weavec::Frontend │ Clang FrontendAction, libTooling, │ lib/Frontend │ whole-program orchestration, │ │ sidecars, driver, diagnostics └────────────┬─────────────┘ ▼ ┌──────────────────────────┐ │ weavec::Analysis │ Clang AST → core facts, │ lib/Analysis │ inference, checkers └──────┬───────────┬───────┘ ▼ ▼ ┌────────────────────┐ ┌────────────────────┐ │ weavec::Core │ │ Clang / LLVM │ │ lib/Core │ │ (external) │ │ no Clang/LLVM │ └────────────────────┘ └────────────────────┘In this guide
Section titled “In this guide”- weavec::Core — the model
- weavec::Analysis — the bridge
- weavec::Frontend — Clang integration
- tools/weavec and tools/weavec-cc
- Heap postconditions and value snapshots
- Compositional calls (RFC 0016)
- Arrays and containers (RFC 0015)
- Target integers and compositional bounds (RFC 0017)
- Diagnostics contract
- Build structure
- Corpus
- Pointer identity and contextual call effects (RFC 0014)
- Checked contracts (RFCs 0018–0019)
- Reuse and work accounting (RFC 0020)
- Checked C interfaces (RFC 0022)
- Inductive containers (RFC 0023)
- Opaque interfaces and private state (RFC 0028)