29 lines
1 KiB
Markdown
29 lines
1 KiB
Markdown
# Optional vendor: Souffle
|
|
|
|
Upstream: https://github.com/souffle-lang/souffle
|
|
Pinned ref: `2.5`
|
|
Pinned commit observed: `5682a9f12e2668ecdd26348fe63cc508bc0fcf47`
|
|
License: Universal Permissive License 1.0 (UPL-1.0)
|
|
|
|
## Fold role
|
|
|
|
Fact engine for reachability, taint, call graph, and interprocedural data-flow
|
|
relations. Souffle should consume Fold MidIR facts and emit derived facts that
|
|
Z3-backed detectors can use as assumptions or prioritization hints.
|
|
|
|
## Initial integration posture
|
|
|
|
- Do not link into `fold-core` yet.
|
|
- Fetch to `third_party/souffle/src` with `scripts/vendor/fetch_analysis_libs.sh`.
|
|
- First prototype should use standalone `.dl` + TSV facts. Move to generated C++
|
|
(`souffle -g.cpp`) only after useful relations are proven.
|
|
|
|
## External docs
|
|
|
|
- C++ interface: https://souffle-lang.github.io/interface
|
|
- Execution modes: https://souffle-lang.github.io/execute
|
|
|
|
## Open checks
|
|
|
|
- Define stable MidIR IDs for functions, blocks, ops, values, and provenance.
|
|
- Add caps/profiling before any whole-project fact generation.
|