Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Paper Submission (OSDI 25) Sprint Improvements #170

Merged
merged 47 commits into from
Dec 19, 2024
Merged

Conversation

JustusAdam
Copy link
Collaborator

@JustusAdam JustusAdam commented Dec 18, 2024

What Changed?

This PR contains a plethora of improvements and fixes performed for the OSDI 25 submission. They should be separate PRs but I am too lazy to make so many.

Why Does It Need To?

This PR fixes the following problems:

  • async_trait recognition now accommodates newer versions which sometimes have more than 2 predicates in the dyn
  • Writing cross-crate MIR bodies now happens after the analysis and can be skipped. The analysis will lazily fetch and create typecheck facts for local bodies.
  • Bodies are now written in a per-crate artifact to reduce size. Filenames contained in those artifacts are deduplicated.
  • End-to-end timing (including for cross crate MIR dumping) is now recorded as well as and new timers for dumping of MIR have been added
  • For efficiency we no longer construct the polonius facts but use just the outlives constraints directly which turn out to be sufficient
  • Shim calls (for function pointers and closures) are now handled correctly
  • Fixed control flow across function boundaries. It is now emitted correctly.
  • Control flow edges from the await state machine are now omitted from the PDG.
  • Artifacts are written (vastly) more efficiently using buffered readers/writers
  • External marker files can now assign multiple markers to an entity in a single entry or to multiple refinements.
  • PDGs are now always constructed for bodies that handle marked types
  • Emitting the spans of analyzed bodies has been reinstated
  • Context has been renamed to RootContext and a new Context trait has been introduced that contains some of the simple graph queries.

Checklist

  • Above description has been filled out so that upon quash merge we have a
    good record of what changed.
  • 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.

@JustusAdam JustusAdam changed the title Counting returns Paper Submission (OSDI 25) Sprint Improvements Dec 18, 2024
@JustusAdam JustusAdam merged commit 0a5c628 into main Dec 19, 2024
4 checks passed
@JustusAdam JustusAdam deleted the counting-returns branch December 19, 2024 01:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant