Skip to content

Implement the lazy Analysis Manager DAG #7

Closed

Description

@SizzleUnrlsd

The AnalysisManager is the core of the engine and belongs to Phase 1 infrastructure.

  • Registry of analyses and their declarative dependencies (dependency DAG, not a rigid chain)
  • Uniform API: ctx.get(SymbolAnalysis), ctx.get(CFGAnalysis, function), ctx.get(TaintAnalysis, function)
  • Lazy evaluation at module and function granularity; ctx.get(CFGAnalysis, foo) must not build every CFG in the project
  • In-memory cache keyed by analysis type and module/function target; analyses declare a version. Persistent cache keyed by IR fingerprint and plugin/API version is deferred to Phase 10
  • Two pass families: AnalysisPass (read-only) and TransformationPass; transformations declare what they preserve and invalidate
  • Shared results are computed once regardless of how many plugins request them
  • Expose the Phase 2 semantic results (ScopeAnalysis, ImportAnalysis, SymbolAnalysis) as the first registered analyses

Reference: docs/architecture.md §8 Analysis Manager, §9 Analysis DAG, §10 Lazy Evaluation, §11 Cache, §12 Invalidation.

Delivery: #8

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions