--- title: "Types Team Meetup Details" date: 2023-08-30 / 2023-10-09 - 2023-10-11 discussion: - https://rust-lang.zulipchat.com/#narrow/stream/144729-t-types/topic/in-person.20meetup - https://rust-lang.zulipchat.com/#narrow/stream/144729-t-types/topic/in-person.20meetup.20agenda url: https://hackmd.io/cO1NJWTHTVihbE0UCWyRfg --- # 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 * 09:00 – 10:00 / [Welcome, last meetup review](https://hackmd.io/a4BNc6KPSZCVIFFb9QBNcg) * 10:00 – 11:00 / [Organizational discussion](https://hackmd.io/MtfD8X9GRxqdfZeT8vxteQ) * 11:00 - 12:00 / [Stabilization process](https://hackmd.io/aHnGavgaTnmQiNAiE9tC3g) -- lcnr to prep * 12:00 - 14:00 / Lunch * 14:00 - 17:00 / [Coherence and trait solver](https://hackmd.io/ABcskdRCRj6WuE3TeX9zEQ) -- lcnr, errs * Dinner ### Tuesday 2023.10.10 * 09:00 - 10:30 / [TAIT overview](https://hackmd.io/QOsEaEJtQK-XDS_xN4UyQA) -- oli-obk, TC, CE * 09:00 - 10:30 / Polonius * 11:00 - 12:00 / [a-mir-formality (overview, roadmap, key milestones)](https://hackmd.io/A37wKGqoQ0OmyT8x5tROCA) -- nikomatsakis to prep * 12:00 - 14:00 / Lunch * 14:00 - 15:30 / [Region solving in new trait solver and polonius](https://hackmd.io/qd9Wp03cQVy06yOLnro2Kg) -- nikomatsakis (lcnr) * [Types team 2024 roadmap](https://hackmd.io/hqjun2xuRQmtBcCps-bAnA) * Dinner ### Wednesday 2023.10.11 * 09:00 - 12:00 / [Polonius](https://hackmd.io/NK3bxGl_QXeyY4UBgFHzlQ) * 09:00 - 12:00 / [UnlimiTAITed](https://hackmd.io/QOsEaEJtQK-XDS_xN4UyQA) * 12:00 - 14:00 / Lunch * 14:00 - 17:00 / [Types team 2024 roadmap](https://hackmd.io/hqjun2xuRQmtBcCps-bAnA) and/or unscheduled things if we reach alignment quickly * [Weak type aliases](https://hackmd.io/hnJkp_ZdT6aVUu-7piUdsQ) * 20:00 - 22:00 / Speaker dinner for EuroRust (nikomatsakis to attend) 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) * [ ] `'erased` during analysis (https://github.com/rust-lang/types-team/issues/101) * [ ] Existential lifetimes (https://github.com/rust-lang/rust/issues/60670) * [Analysis of #42940](https://hackmd.io/83sY9XQjSiK79QdnqK0F3Q). * [x] projections in orphan check: https://github.com/rust-lang/rust/issues/99554 * [ ] making all traits coinductive :x: * 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) :x: * 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](https://github.com/rust-lang/rust/issues/25860)), we need coinduction * [ ] invariants of the type system :shrug: fuzzing https://rustc-dev-guide.rust-lang.org/solve/invariants.html * [ ] Dependencies on T-type related to 2024 Edition * [Rust 2024 survey](https://hackmd.io/itGzgM1fQl-oh4d1iP8sFg) * [Weak type aliases](https://hackmd.io/hnJkp_ZdT6aVUu-7piUdsQ). * From the [survey](https://hackmd.io/itGzgM1fQl-oh4d1iP8sFg): * Remove where clauses on type aliases or make them work (["lazy type aliases"](https://rust-lang.zulipchat.com/#narrow/stream/318377-t-lang.2Froadmap-2024/topic/lazy.20type.20aliases)). -- https://github.com/rust-lang/lang-team/issues/227 * Implied bounds. * blocked on coinduction * Fixing [limitations](https://blog.rust-lang.org/2022/10/28/gats-stabilization.html) 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](https://github.com/rust-lang/rust/issues/65991). * blocked on [somebody writing stuff](https://github.com/rust-lang/rust/issues/65991#issuecomment-1757680181) * Perfect derive (we've discussed) * blocked on coinduction, new solver. * [Promoting ! to a type rust#35121](https://github.com/rust-lang/rust/issues/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](https://rust-lang.github.io/negative-impls-initiative/). * 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](https://smallcultfollowing.com/babysteps/blog/2022/01/07/dyn-async-traits-part-7/)). * 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](https://github.com/rust-lang/rust/issues/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: ```rust 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](https://rust-lang.zulipchat.com/#narrow/stream/144729-t-types/topic/in-person.20meetup.20agenda/near/393989763): 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](https://rust-lang.zulipchat.com/#narrow/stream/326132-t-types.2Fmeetings/topic/2023-10-16.20weekly.20meeting). 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