--- title: Triage meeting 2021-04-06 tags: triage-meeting --- # T-lang meeting agenda * Meeting date: 2021-04-06 ## Attendance * Team members: Josh, Scott, Niko, Felix * Others: simulacrum, oliver ## Meeting roles * Action item scribe: Mark * Note-taker: nikomatsakis ## Scheduled meetings Planning meeting tomorrow! * Open issues for possible design meetings * there are a few open already * Status updates for open projects etc ## Action item review * [Action items list](https://hackmd.io/gstfhtXYTHa3Jv-P_2RK7A) ## Pending proposals ### "MCP: Allowing the compiler to eagerly drop values" lang-team#86 **Link:** https://github.com/rust-lang/lang-team/issues/86 - Still waiting for summary, no action needed - Inclined to close for now, take action item to make sure summary happens ### "MCP: Change path attribute behavior of modules." lang-team#89 **Link:** https://github.com/rust-lang/lang-team/issues/89 - Change behavior of `#[path]` when you are inside a module `m` and `m` was declared with a `#[path]` attribute - This would have to be tied to an edition, for compatibility reasons - Too late for Rust 2021 -- deadline for decisions has passed, and it's not very urgent - There are also a few options to consider, so don't want to rush into it - Summary: - when using `#[path]` to specify a relative path for a module... - ...this result is affected by whether the current module is a `mod.rs` (or `lib.rs`) pattern... - versus a `foo.rs` file. - This MCP tries to tweak those rules. - Scott: General idea of matching the `foo.rs` and `lib.rs/mod.rs` pattern seems reasonable - ...but so does having `path` work only like normal filesystem stuff, so who knows - Defer detailed discussion for now till a future meeting or async. - Question for today: push on 2021 Edition? - Felix: I fear the pattern that of not taking things for Rust 2021 but then not thinking about it again until just before next edition ships - Josh: Agree! I think we should still talk this over very soon, but not target Rust 2021. - Meeting consensus - Do not target Rust 2021 - But do continue discussing as a possible item for a future edition (and do not wait until right up until the deadline) ## Nominated RFCs ### "RFC: Supertrait item shadowing" rfcs#2845 **Link:** https://github.com/rust-lang/rfcs/pull/2845 - Unable to define a subtrait that inherits from a supertrait where both define the same method and to deal with it unambiguously - Scott nominated: 1 check box away from FCP, what do we think? - [Niko's comment](https://github.com/rust-lang/rfcs/pull/2845#issuecomment-724304466) - Conclusion: - Niko and Felix to take action itms to review - May need a change to the RFC to reflect the request for an ambiguity error when invoked from inside the trait ### "add const-ub RFC" rfcs#3016 **Link:** https://github.com/rust-lang/rfcs/pull/3016 - Been discussed in numerous previous meetings - Ralf rewrote the RFC along the lines we suggested in previous meeting: - Concluded that, at least for now, we do not want to *mandate* UB detection but to leave it as implementation guidance - Niko proposed fresh FCP - Action items for folks to read and check their boxes ### "Raw Keywords" rfcs#3098 **Link:** https://github.com/rust-lang/rfcs/pull/3098 - Currently in FCP - There have been some concerns raised on the thread - We may want to pause the FCP. Some reasons: - this would allow someone to do an implementation PR and do a crater run to decide if we can use `k#` in every edition - to give due time for consideration from some recent comments (e.g., [1](https://github.com/rust-lang/rfcs/pull/3098#issuecomment-812953977) and [2](https://github.com/rust-lang/rfcs/pull/3098#discussion_r607317577)) - Major concern raised is basically - "would we wind up taking long enough to process the non-keyword part of any change that the keyword can just take the next edition" - but also "user experience is substantially worse" - Eric raised the question of opting in with feature to using the new keyword - The argument against features we made before is that we don't want the combinatorial explosion of "dialects of Rust" - e.g., this project uses feature A but not feature B - Felix feels the wording is misleading about the word `ident` - Meeting consensus - Cancel the FCP - Note in the OP the following next steps: - Prioritize 3101 to secure the necessary edition space - Want the results of a crater run to deterine whether `k#foo` can be used across all editions - ### "RFC: Reserved prefixes in the 2021 edition" rfcs#3101 **Link:** https://github.com/rust-lang/rfcs/pull/3101 - Reserves token space without defining semantics for anything in that token space - Effect of current RFC is to forbid the following from being tokenized (in all cases, with no whitespace): - Reserves `ident#ident` - Reserves `ident"..."` - `ident'...'` - `ident#[0-9]+` - It's weird right now that `a"xyz"` is three tokens but `b"xyz"` is one token, which this RFC would resolve. - Some debate about the right time to issue an error: - Tokenization time? - Pass on through and make it usable in a macro? - If we allow passing on to macros, you can implement prototypes of new syntax - But you can implement macros that use this space in ways that could conflict with our reservation! - Also, if you are going to prototype, you might as well just use the actual keyword, not `k#foo`, right? - RFC had proposed that we "don't worry" about breaking things that conflict, but it's better if we don't have to make that judgement call - Cross edition compatibility: - Rust 2021 code can use older macros with whitespace; macro-rules macros cannot observe this - Only concern might be a procedural macro that was comparing spans to tell if two tokens were *truly* adjacent - Tokenization error is forwards compatible with all future options - Also compatible with tokenizing differently from a single token, should we want that, or being handled in special ways - Concerns with FCP merge? - Mark: General concern with speed, but no concrete concerns - Scott: major impact would be if people are using this in macros already (e.g., `f"foo"`) - Josh to start an FCP - Edition decision: - Can do in Rust 2021 - If no impact, Rust 2018 and 2015 as well ## P-high issues on rust-lang/rust ### "`fn() -> Out` is a valid type for unsized types `Out`, and it implements `FnOnce<(), Output = Out>`" rust#82633 **Link:** https://github.com/rust-lang/rust/issues/82633 * Previous consensus: * Want to prohibit function types that return unsized types * estebank has opened [PR #83915](https://github.com/rust-lang/rust/pull/83915) to do that * some discussion about whether it's sufficient, as the PR doesn't cover `impl Trait` * now up for compiler team review ## Nominated PRs and issues on rust-lang/reference ### "Document raw pointer <-> usize casts." reference#970 **Link:** https://github.com/rust-lang/reference/pull/970 * Discussion centers around what language to use regarding provenance, and whether it is preserved * Long Zulip thread without a concise summary * The reference PR itself doesn't summarize advantages or disadvantages, simply states that provenance is lost * Niko: This is wading into stacked borrows territory, why would we want to say this specific thing? * Seems clear we won't be able to reach a conclusion in this meeting * Need a good summary of tradeoffs etc, perhaps a design meeting * Need Ralf in that design meeting * Better topic might be "let's plan the things to address and in what order" than to decide on this specific PR * Question is: is this question something we can do incrementally or only as part of a larger effort? * Action item: * Niko to summarize that we want to have the above discussion first and that we would prefer not to make this decision in a PR on the reference but rather an RFC etc ## Nominated PRs and issues on rust-lang/rust ### "Implement new lint for detecting buggy pointer-to-int casts" rust#81789 **Link:** https://github.com/rust-lang/rust/pull/81789 ### "Use const generics for stdarch intrinsics" rust#83167 **Link:** https://github.com/rust-lang/rust/issues/83167 * Decision that needs making: do we want to **require** const generics for the intrinsics * No updates, seems like we are unsure what the right next steps would be * Have passed on that we would like feedback from actual users * No further consideration required at this time, un-nominate * Note that we are up against the Rust 2021 deadline, but then again we have to keep it for Rust 2018; nobody is too worried about having to delay until next edition. * Historical note: * How did this get stabilize without langs being invoked? * Was overlooked as a procedural "misstep", essentially. * Ordinarily lang doesn't give a lot of scrutiny to rustc attributes, but in this case it becomes part of the public interface * Proposed rule: * `rustc_` should not be used for things that affect the public API * Action item: Mark to leave a summary comment and un-nominate (for lang) ### "Update BARE_TRAIT_OBJECT and ELLIPSIS_INCLUSIVE_RANGE_PATTERNS to errors in Rust 2021" rust#83213 **Link:** https://github.com/rust-lang/rust/pull/83213 ### "parser: Remove support for inner attributes on non-block expressions" rust#83312 **Link:** https://github.com/rust-lang/rust/pull/83312 ### "Stabilize extended_key_value_attributes" rust#83366 **Link:** https://github.com/rust-lang/rust/pull/83366 ### "Stabilize pat2015 but leave :pat2021 gated" rust#83386 **Link:** https://github.com/rust-lang/rust/pull/83386 - Niko wants people to look at this. But we did not discuss in meeting. ### "`#[repr(align(8))]` is not accepted for arrays" rust#83595 **Link:** https://github.com/rust-lang/rust/issues/83595 - This is actually about putting the attribute on a *field*, which AFAIK has never actually done anything. - I think this is by design? IIRC we talked about this one in some meeting when the PR went it to check it... ### "Revert "Rollup merge of #82296 - spastorino:pubrules, r=nikomatsakis"" rust#83713 **Link:** https://github.com/rust-lang/rust/pull/83713