Skip to content

Commit

Permalink
Integrate PDGs created by Flowistry (#119)
Browse files Browse the repository at this point in the history
## What Changed?

- Data and control flow graph construction moves into the Flowistry
crate.
- Removes `df`, inlining logic and the algebra.
- Entails an update of the rustc toolchain (to achieve parity with
flowistry).
- Graph contains all program locations, not just function calls.
- Control flow is non-transitive
- The PDG now tracks individual places instead of abstract function
arguments. This improves field sensitivity across function calls.
- Forge output is gone

## Why Does It Need To?

Field sensitivity is now handled as the initial analysis constructs the
PDG and in fewer lines of code.

## Caveats

At the time of this merge, the following regressions in the PDG have not
been fixed yet

- willcrichton/flowistry#95
- willcrichton/flowistry#94
- willcrichton/flowistry#93
- And while Will fixed the strong updates
willcrichton/flowistry#90 the second issue
mentioned there is still present.

## Checklist

- [x] Above description has been filled out so that upon quash merge we
have a
  good record of what changed.
- [x] New functions, methods, types are documented. Old documentation is
updated
  if necessary
- [ ] Documentation in Notion has been updated
- [ ] Tests for new behaviors are provided
  - [ ] New test suites (if any) ave been added to the CI tests (in
`.github/workflows/rust.yml`) either as compiler test or integration
test.
*Or* justification for their omission from CI has been provided in this
PR
    description.
  • Loading branch information
JustusAdam authored Feb 21, 2024
1 parent 98a2d99 commit f5517e0
Show file tree
Hide file tree
Showing 78 changed files with 4,195 additions and 10,758 deletions.
File renamed without changes.
40 changes: 7 additions & 33 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,38 +41,6 @@ jobs:
- name: Run tests
run: scripts/compiler-tests.sh

intergration-tests:
name: Integration Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Build Compiler
run: cargo build --verbose
- name: Cache Racket dependencies
uses: actions/cache@v3
with:
path: |
~/.cache/racket
~/.local/share/racket
key: ${{ runner.os }}-integration-tests-${{ env.racket_version }}-${{ env.FORGE_REVISION }}
- name: Install Racket
uses: Bogdanp/[email protected]
with:
architecture: 'x64'
distribution: 'full'
variant: 'CS'
version: ${{ env.racket_version }}
- name: Install Forge
run: |
cd ..
git clone https://github.com/tnelson/Forge
cd Forge
git checkout ${FORGE_REVISION}
cd forge
raco pkg install --auto || raco setup forge
- name: Run Tests
run: scripts/integration-tests.sh

format-check:
name: Format Control
runs-on: ubuntu-latest
Expand Down Expand Up @@ -132,4 +100,10 @@ jobs:
target/
key: ${{ runner.os }}-rust-deps-${{ hashFiles('Cargo.lock', 'rust-toolchain.toml') }}
- name: Here come the complaints
run: scripts/doc-check.sh
run: scripts/doc-check.sh

integration-tests:
name: Integration Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
7 changes: 6 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,9 @@ flow-graph.json
*.info.json

# Delete this if we want to include a rustfmt configuration
.rustfmt.toml
.rustfmt.toml

/.idea/

.DS_Store
*.flowistry-pdg.pdf
Loading

0 comments on commit f5517e0

Please sign in to comment.