--- title: Planning meeting 2023-10-04 tags: T-lang, planning-meeting, minutes date: 2023-10-04 discussion: https://rust-lang.zulipchat.com/#narrow/stream/213817-t-lang/topic/Planning.20meeting.202023-10-04 url: https://hackmd.io/Mn-YePbCRc2eYFS30inoww --- # T-lang planning meeting agenda - Meeting date: 2023-10-04 ## Attendance - Team members: tmandry, nikomatsakis, pnkfelix, scottmcm - Others: TC, waffle, Jubilee ## Meeting roles - Minutes, driver: TC ## Dates, availability, scheduling - 2023-10-11 - Scheduled: [Unsafe extern blocks - #3484](https://github.com/rust-lang/rfcs/pull/3484) ([#223](https://github.com/rust-lang/lang-team/issues/223)) - 2023-10-18 - Scheduled: "Design meeting: Decide about the future for consts in patterns" [#220](https://github.com/rust-lang/lang-team/issues/220) - RalfJ confirmed his availability. * 2023-10-25 - Scheduled: [Implementable trait aliases - #3437](https://github.com/rust-lang/rfcs/pull/3437) ([#224](https://github.com/rust-lang/lang-team/issues/224)) - NM: But either the RFC needs an update such that `trait A Foo + Bar` is supported if `Bar` is a marker trait (leaving the more general case for future work), or we add an addendum to this effect, which either NM or tmandry might write. NM: Unavailable for 2023-10-11 meeting due to types team meetup. Others: Free for all Wednesdays this month. ## Proposed meetings - "Design meeting: Decide about the future for consts in patterns" [#220](https://github.com/rust-lang/lang-team/issues/220) - "We need to settle the behaviour of floating-point in `const`" [#222](https://github.com/rust-lang/lang-team/issues/222) - "2023 roadmap update" [#188](https://github.com/rust-lang/lang-team/issues/188) - "discuss/resolve `fn { mod { (use) super::...; } }` and its interaction with derive patterns" [#193](https://github.com/rust-lang/lang-team/issues/193) Please update these in https://github.com/orgs/rust-lang/projects/31/views/7. ## Proposed RFC reads - [Unsafe extern blocks - #3484](https://github.com/rust-lang/rfcs/pull/3484) - [Placement by return - #2884](https://github.com/rust-lang/rfcs/pull/2884) - [Implementable trait aliases - #3437](https://github.com/rust-lang/rfcs/pull/3437) - [UnsafeAliased - #3467](https://github.com/rust-lang/rfcs/pull/3467) - [Unsafe lifetime - #3199](https://github.com/rust-lang/rfcs/pull/3199) - [Aligned trait - #3319](https://github.com/rust-lang/rfcs/pull/3319) - [Add `bf16`, `f64f64` and `f80` types - #3456](https://github.com/rust-lang/rfcs/pull/3456) - [Unified string literals - #3475](https://github.com/rust-lang/rfcs/pull/3475) - [Code string literals - #3450](https://github.com/rust-lang/rfcs/pull/3450) ## Interest meter Make a section and put in things that potentially interest you, and/or things you don't feel you need to be involved for. ### Niko Would like to be involved in the discussion: - "Design meeting: Decide about the future for consts in patterns" [#220](https://github.com/rust-lang/lang-team/issues/220) -- const in patterns, gotta get that done! I'm so sick of talking about this. - [Placement by return - #2884](https://github.com/rust-lang/rfcs/pull/2884) -- relevant to AFIT, RPITIT. - [UnsafeAliased - #3467](https://github.com/rust-lang/rfcs/pull/3467) -- this seems like a fundamental step fwd, opsem team? - [Unsafe lifetime - #3199](https://github.com/rust-lang/rfcs/pull/3199) -- I've definitely hit this problem when writing unsafe code, and it's a real drag. Curious to see discussed, don't know that I have to be involved: - [Aligned trait - #3319](https://github.com/rust-lang/rfcs/pull/3319) -- seems like a small change, maybe a win? - [Code string literals - #3450](https://github.com/rust-lang/rfcs/pull/3450) -- indentable strings feels like a real win, not sure if this is the right step forward exactly, kind of a "fun piece of candy". - [Add `bf16`, `f64f64` and `f80` types - #3456](https://github.com/rust-lang/rfcs/pull/3456) -- I'm sure this is important. I just have very little to add. ### Felix * Interested in [#220](https://github.com/rust-lang/lang-team/issues/220). * Interested in maybe a combo meeting covering both of #3475 (unified string literals) and #3450 (code string literals). Main reason to have design meeting is to align team on our appetite for making any changes in this general space. * Placement by Return #2884 -- main concern is whether doing this complicates solving more general problem (e.g. of returning a Result enum with different destination slots for the distinct variants). ### Scott * [#220](https://github.com/rust-lang/lang-team/issues/220)! * [3484 (unsafe extern blocks)](https://github.com/rust-lang/rfcs/pull/3484) looks like an edition thing, so we might want to look at it sooner rather than later. * Unsafe lifetime is interesting -- it would be nice to be able to write things like `sizeof(slice::Iter<'!, T>)` without needing bounds on `T` -- but last I heard it was really hard to make sound, so might be a direction discussion instead. * `bf16` and such I feel like I more want a "use literals with custom types" RFC first. ### Tyler * [#220](https://github.com/rust-lang/lang-team/issues/220). * Unsafe extern. * Implementable trait aliases – but RFC needs an update. * UnsafeAlias to complete the matrix – but Ralf might be busy this month with #220. * Unsafe lifetime. ## Minutes ### Unsafe extern blocks - Link: [Unsafe extern blocks - #3484](https://github.com/rust-lang/rfcs/pull/3484) NM: Should we just FCP this? tmandry: I'll do it. Jubilee: There is an open concern about whether people will accidentally stabilize huge APIs. NM: Maybe we should have a design meeting with a broader scope about overloading the `unsafe` keyword. pnkfelix: Maybe there should be a lint. NM: There is some subtlety there. scottmcm: Maybe the `trusted` keyword would help here. One of the questions is whether we should require `safe fn`. TC: We could FCP this, then also separately consider those things. If those other things take a long time or don't happen, maybe this is still a good idea on its own. NM: That is the question. I find my enthusiasm is tempered by considering these other things. scottmcm: The one thing that makes me pause is that it's not obvious what exactly is the transition mechanism. TC: I've talked with Lokathor about this. He's aware he needs to add it to the document. It's clear what `cargo fix` should do here. NM: It's probably worth having a meeting about this. Something like this is clearly the direction we want to go, but there are things to discuss. ### Aligned trait - Link: [Aligned trait - #3319](https://github.com/rust-lang/rfcs/pull/3319) Room: The RFC needs more motivation stated. Jubilee: There is a deep motivation. TC: Could you make a PR for that? Jubilee: Yes, I can write that up. ### The string-related RFCs - Link: [Unified string literals - #3475](https://github.com/rust-lang/rfcs/pull/3475) - Link: [Code string literals - #3450](https://github.com/rust-lang/rfcs/pull/3450) - Prior discussion: [pre-RFC: Extend Hash-sequences to all String Literals](https://internals.rust-lang.org/t/pre-rfc-extend-hash-sequences-to-all-string-literals/19300/1) - Prior art: [C# - Raw string literal text - `"""` in string literals](https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/raw-string) - Prior art: [C# - Tutorial: Write a custom string interpolation handler](https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/tutorials/interpolated-string-handler) - Prior art: [Swift - Enhancing String Literals Delimiters to Support Raw Text](https://github.com/apple/swift-evolution/blob/main/proposals/0200-raw-string-escaping.md) pnkfelix: We may want to talk about how much we want to invest in this space. tmandry: I think I'm in favor of both of the RFCs. pnkfelix: The unified string literals makes the raw string syntax redundant. (Discussion about the scope of unified string literals.) TC: One of the things we may want to discuss is the potential interaction with `format!`. In Swift, where this is pulled from, there is that interaction, and it's part of what makes it motivating in Swift. (Discussion about that, about fstrings, etc.) NM: Looking at the future possibilities, those seem more exciting to me. I see the motivation here. tmandry: I kind of like triple quotes. NM: If we do the unified string literals, I'd like to get rid of raw string literals to keep complexity down. tmandry: Anyone want to talk me down from triple quotes? TC: Do you mean three or more? tmandry: Three or more. scottmcm: The C# rule seems to be three or more. TC: These seem to fall under the category of "dare to ask for more". There are some quality of life improvements possible here. NM: fstrings are maybe worth thinking about. That's maybe a true "dare to ask for more". It would make it so much more ergonomic to get capital strings. TC: Does that maybe encompass a `const` `format!` that produces a `&'static str'`? NM: Interesting, yes, it could. Jubilee: There are people who want it to be `String` and there are people who want it to be a language primitive. If you wind up with `String + format_args!/format_sting!`, you have to do an allocation and merge the two semantically. The people who want it to be `format_args!` care a lot about it not having extra allocations or use the `alloc` crate. scottmcm: C# has `$`-strings which is a spin on `fstrings`. TC: It does seem like a new design should take into account laziness. NM: It does seem that this comes up a lot, and there are motivations for both. I'll leave [feedback](https://github.com/rust-lang/rfcs/pull/3475#issuecomment-1747380570) on the RFC for the unified string literals. ### Prioritizing things for 2024 scottmcm: These are potentially interesting, but they're not edition-dependent. We might want to prioritize the 2024 things. TC: Maybe we should review the [2024 edition survey](https://hackmd.io/itGzgM1fQl-oh4d1iP8sFg). ### Publishing a schedule NM: We should publish our schedule more widely. We have various places for it now. At one time we made blog posts. TC: The source of truth is the [project](https://github.com/orgs/rust-lang/projects/31) on GitHub for the schedule, since that's what is pulled in by [triagebot](https://github.com/rust-lang/triagebot). I've been making certain improvements to triagebot; one is that it now shows the *dates* of the scheduled meetings on our agenda. It pulls this from GitHub. tmandry: Our page for [design meetings](https://lang-team.rust-lang.org/meetings/design.html) links to the [calendar](https://lang-team.rust-lang.org/calendar.html) page which points to our Google calendar. TC: Let's update that page to link to the GitHub project for the schedule. tmandry: I'm doing that. (The meeting ended here.) ## Active initiatives ### "project-safe-transmute" lang-team#21 **Link:** https://github.com/rust-lang/lang-team/issues/21 ### "const-evaluation" lang-team#22 **Link:** https://github.com/rust-lang/lang-team/issues/22 ### "const-generics" lang-team#51 **Link:** https://github.com/rust-lang/lang-team/issues/51 ### "Deref patterns" lang-team#88 **Link:** https://github.com/rust-lang/lang-team/issues/88 ### "Generators (iterator functions), sync and async" lang-team#137 **Link:** https://github.com/rust-lang/lang-team/issues/137 ### "Initiative: trusted external static declarations" lang-team#149 **Link:** https://github.com/rust-lang/lang-team/issues/149 ## Pending proposals on the lang-team repo None. ## Pending PRs on the lang-team repo ### "Add size != stride to frequently requested changes" lang-team#216 **Link:** https://github.com/rust-lang/lang-team/pull/216