Skip to content

-Zassumptions-on-binders=min_coroutines #33

Description

@BoxyUwU

the general idea here is a minimal form of assumptions on binders which:

  • Only has assumptions for the binder around coroutine witness types
  • Doesn't rewrite constraints involving placeholders to be constraints involving smaller universe variables

this avoids a lot of the complexity with the full assumptions on binders design and avoids soundness issues from assuming more things without them ever being proven.

getting a first version of this flag will require:

  • checking which version of abby is enabled when entering binders and changing behaviour for the binder when entering witness types only
  • fix up a bunch of the asserts in the eagerly_handle_placeholders logic to no longer assert things about what universe things are (when min_coroutines is in use) as we now won't be fully eagerly handling placeholders in all -Zassumptions-on-binders variants
  • drop pretty much all of the rewrite rules when using min_coroutines. we want to drop constraints if they hold, and otherwise keep them unchanged and propagated to the root.
  • dont destructure type outlives constraints into their constituent parts eagerly (cc eagerly destructing type outlives constraints? #23). I'm not sure if this is actually necessary for this to be a useful feature or not. If it isn't then I want to avoid doing this to keep min_coroutines as small as possible. If it does wind up being necessary it can be done we can re-enable it in the future and after we've added support for VisibleForLeakCheck (cc support VisibleForLeakCheck #30)

this issue doesn't cover all of the stuff needed for stabilization of this flag, just what the initial implementation will need to be

Activity

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

Metadata

Metadata

Assignees

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