owned this note changed a year ago
Published Linked with GitHub

Types Team Meetup Details

Summary

  • Dates: Monday 2023.10.09 – Wednesday 2023.10.11
  • Location: Amazon office in Brussels (see below)
  • Expected attendees: 7 (Niko, Jack, Santiago, Lcnr, compiler-errors, lqd, Amanda Stjerna)
    • poke Niko/Jack to discuss joining if not on this list
  • Agenda: see below
  • Funding: not centrally provided

Location

Building Information

Amazon Site Code: BRU10

Physical Address:

Amazon Europe Core SARL
27 Avenue Des Arts (2nd,3rd, 4th & 5th floor)
1040 Brussels, Belgium

Room booking:

Contact nikomatsakis with questions.

Agenda

Monday 2023.10.09

Tuesday 2023.10.10

Wednesday 2023.10.11

End with:

  • retro on this meetup, what worked well, what didn't
  • anything you wanted to talk about but didn't get time to do so, or other goals that were not met?

Brainstorming doc: https://hackmd.io/_jGVGRrXRoef8AzbDC1NfA

Other topics to squeeze in

  • Existential lifetimes and errs's PR (https://github.com/rust-lang/rust/pull/116040)
  • projections in orphan check: https://github.com/rust-lang/rust/issues/99554
  • making all traits coinductive
    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →
    • generally confident in it, but impl is blocked on the new solver
    • could use an RFC
    • motivations
      • more intuitive, enables perfect derive
      • simpler overall (unifies send traits and other things)
      • supports best fix for #25860 for some reason or other
  • implication "stuff" (where-clauses on binders)
    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →
    • blocked on eagerly handling region outlives and things ("new leak check")
      • which is blocked on new solver, but not needed for other things in particular
    • to have the proper implied bounds (#25860), we need coinduction
  • invariants of the type system
    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →
    fuzzing https://rustc-dev-guide.rust-lang.org/solve/invariants.html
  • Dependencies on T-type related to 2024 Edition
    • Rust 2024 survey
    • Weak type aliases.
    • From the survey:
      • Remove where clauses on type aliases or make them work ("lazy type aliases"). https://github.com/rust-lang/lang-team/issues/227
      • Implied bounds.
        • blocked on coinduction
      • Fixing limitations on GATs.
        • blocked on new solver and implied bounds
      • dyn dispatch for AFIT.
        • blocked on lang-design but not in a technical way, errs just want someone to tell him what to do
          • so he can tell you why it is impossible
      • dyn upcasting coercion.
      • Perfect derive (we've discussed)
        • blocked on coinduction, new solver.
      • Promoting ! to a type rust#35121.
        • If we make ! an alias for Infallible but don't change the fallback, then existing uses of Infallible start breaking.
        • An edition may not be as helpful as hoped; we've have to remind ourselves why that is.
        • Can we just stabilize !??
        • blocked on lang team / somebody writing up a good summary to remind us how awful this is
      • Negative impls in coherence.
        • blocked on coherence in new solver and a-mir-formality
          • have to be careful because of param-env candidates
      • "Make dyn Trait more usable: Broaden the set of traits that can be used with dyn and make working with dyn closer to working with generics."
        • Similar to the next one.
      • "Make more patterns "object safe" and thus usable in dyn Trait objects, including passing self by value and handling impl Trait in argument position" (see this post).
        • Either this is small and not Edition dependent or it's a huge honkin' change that can't possibly be done by Rust 2024 and would be wildly controversial.
      • Fix "Reordering where clauses can change program behavior" #41756.
        • lcnr: This will not be fixed as part of the current scope of the new trait solver.
        • nikomatsakis: I believe this can and should be fixed but almost certainly not by Rust 2024.

Related to #116040 and existential lifetimes:

trait PhantomCapture {
    type FakeOpaque<T>: Send + 'static;
    fn capture<T>(_t: T) -> Self::FakeOpaque<T>;
}

// This would need existential lifetimes.
// This would not be fixed by a revised version of the #116040 PR:

// error[E0515]: cannot return value referencing function parameter `x`
fn test_return<T: PhantomCapture>(mut x: T) -> T::FakeOpaque<&'static mut T> {
    <T as PhantomCapture>::capture(&mut x)
}

// This would be fixed by a revised version of the #116040 PR:

// error[E0505]: cannot move out of `x` because it is borrowed
fn test_drop_captured<T: PhantomCapture>(mut x: T) {
    let _c1 = <T as PhantomCapture>::capture(&mut x);
    drop(x);
}

FAQ

Missing topics

nikomatsakis: Are there things we should be talking about that we are not?

What does doc prep mean?

spastorino: this is great! :), @nikomatsakis @Jack Huey when you say "some prep" for technical discussions, did you mean that the idea is to prepare documents that are going to serve driving discussions?

group dinners

nikomatsakis: Let's do group dinners monday/tuesday! maybe wednesday! but niko is busy on wed. Any food constraints or recommendations? Drop a line.

team-building event?

nikomatsakis: do we want to do something crazy like axe throwing? trust falls? walk in nature???

Finalizing

We discussed meeting and outcomes in Zulip here. Some key action items:

  • jackh726 + nikomatsakis to start rotation on types-team leadership
  • TC to own update on TAIT and lang-team meeting to cover it
  • nikomatsakis to prepare an a-mir-formality coherence review for a future deep dive meeting

Long term projects:

  • nikomatsakis to drive new stabilization report design
  • jackh726 to own improved tooling to track roadmap
Select a repo