owned this note
owned this note
Published
Linked with GitHub
---
title: Triage meeting 2023-01-31
tags: triage-meeting
---
# T-lang meeting agenda
* Meeting date: 2023-01-31
## Attendance
* Team members: nikomatsakis, Josh, Scott, Felix, Tyler
* Others: simulacrum
## Meeting roles
* Action item scribe: simulacrum
* Note-taker: nikomatsakis
## Scheduled meetings
- Defer planning meeting until 2023-02-08 (Niko and Felix can't attend on the 1st)
## Announcements or custom items
### Planning meeting
* Will hold planning meeting Feb 8
* Please file your issue!
### Governance draft
josh triplett: Draft Governance RFC has gone around \[to all@rust-lang.org -ed.\]. There have been updates, working to make it shorter. We're anticipating trying to make it public in the next few weeks, deferred to incorporate more feedback. Reach out to me or simulacrum or one of the others who sent out the mail to supply feedback.
## Action item review
* [Action items list](https://hackmd.io/gstfhtXYTHa3Jv-P_2RK7A)
## Pending lang team project proposals
None. :tada:
## PRs on the lang-team repo
None. :tada:
## RFCs waiting to be merged
None. :tada:
## Proposed FCPs
**Check your boxes!**
### "Edition Based Method Disambiguation: Preventing inference ambiguity breakages with extension trait methods" rfcs#3240
- **Link:** https://github.com/rust-lang/rfcs/pull/3240
- [**Tracking Comment**](https://github.com/rust-lang/rfcs/pull/3240#issuecomment-1377748067):
> Team member @joshtriplett has proposed to merge this. The next step is review by the rest of the tagged team members:
>
> * [ ] @Amanieu
> * [ ] @BurntSushi
> * [ ] @dtolnay
> * [x] @joshtriplett
> * [ ] @m-ou-se
> * [ ] @nikomatsakis
> * [ ] @pnkfelix
> * [ ] @scottmcm
> * [ ] @tmandry
>
> No concerns currently listed.
>
> Once a majority of reviewers approve (and at most 2 approvals are outstanding), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up!
>
> cc @rust-lang/lang-advisors: FCP proposed for lang, please feel free to register concerns.
> See [this document](https://github.com/rust-lang/rfcbot-rs/blob/master/README.md) for info about what commands tagged team members can give me.
- [**Initiating Comment**](https://github.com/rust-lang/rfcs/pull/3240#issuecomment-1377748031):
> @rfcbot merge
### "unsafe attributes" rfcs#3325
- **Link:** https://github.com/rust-lang/rfcs/pull/3325
- [**Tracking Comment**](https://github.com/rust-lang/rfcs/pull/3325#issuecomment-1396911253):
> Team member @joshtriplett has proposed to merge this. The next step is review by the rest of the tagged team members:
>
> * [x] @joshtriplett
> * [ ] @nikomatsakis
> * [ ] @pnkfelix
> * [ ] @scottmcm
> * [x] @tmandry
>
> No concerns currently listed.
>
> Once a majority of reviewers approve (and at most 2 approvals are outstanding), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up!
>
> cc @rust-lang/lang-advisors: FCP proposed for lang, please feel free to register concerns.
> See [this document](https://github.com/rust-lang/rfcbot-rs/blob/master/README.md) for info about what commands tagged team members can give me.
- [**Initiating Comment**](https://github.com/rust-lang/rfcs/pull/3325#issuecomment-1396911218):
> @rfcbot merge
### "RFC: UTF-8 characters and escape codes in (byte) string literals" rfcs#3349
- **Link:** https://github.com/rust-lang/rfcs/pull/3349
- [**Tracking Comment**](https://github.com/rust-lang/rfcs/pull/3349#issuecomment-1396747916):
> Team member @joshtriplett has proposed to merge this. The next step is review by the rest of the tagged team members:
>
> * [x] @joshtriplett
> * [ ] @nikomatsakis
> * [ ] @pnkfelix
> * [ ] @scottmcm
> * [ ] @tmandry
>
> Concerns:
>
> * raw-byte-strings-with-unicode (https://github.com/rust-lang/rfcs/pull/3349#issuecomment-1396747889)
>
> Once a majority of reviewers approve (and at most 2 approvals are outstanding), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up!
>
> cc @rust-lang/lang-advisors: FCP proposed for lang, please feel free to register concerns.
> See [this document](https://github.com/rust-lang/rfcbot-rs/blob/master/README.md) for info about what commands tagged team members can give me.
- [**Initiating Comment**](https://github.com/rust-lang/rfcs/pull/3349#issuecomment-1396747889):
> I do think we should permit `br"¥¥¥"`, but I don't think we should make any of the other changes proposed in that table, for the reasons @m-ou-se stated.
>
> I'm going to go ahead and propose FCP for this. This does *not* preclude making further changes to how this information is presented.
>
> @rfcbot merge
>
> @rfcbot concern raw-byte-strings-with-unicode
### "Tracking issue for RFC 2515, "Permit impl Trait in type aliases"" rust#63063
- **Link:** https://github.com/rust-lang/rust/issues/63063
- [**Tracking Comment**](https://github.com/rust-lang/rust/issues/63063#issuecomment-1360043090):
> Team member @nikomatsakis has proposed to merge this. The next step is review by the rest of the tagged team members:
>
> * [x] @cramertj
> * [x] @joshtriplett
> * [x] @nikomatsakis
> * [ ] @pnkfelix
> * [ ] @scottmcm
>
> Concerns:
>
> * ~~~~ resolved by https://github.com/rust-lang/rust/issues/63063#issuecomment-1361432898
> * docs (https://github.com/rust-lang/rust/issues/63063#issuecomment-1364525286)
> * function-defining-uses (https://github.com/rust-lang/rust/issues/63063#issuecomment-1385946789)
>
> Once a majority of reviewers approve (and at most 2 approvals are outstanding), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up!
>
> cc @rust-lang/lang-advisors: FCP proposed for lang, please feel free to register concerns.
> See [this document](https://github.com/rust-lang/rfcbot-rs/blob/master/README.md) for info about what commands tagged team members can give me.
- [**Initiating Comment**](https://github.com/rust-lang/rust/issues/63063#issuecomment-1360043060):
> @rfcbot fcp merge
>
> This has been a long-time coming. Let's Do This!
>
> [Stabilization report in this comment.](https://github.com/rust-lang/rust/issues/63063#issuecomment-1354392317)
### "Tracking Issue for "C-unwind ABI", RFC 2945" rust#74990
- **Link:** https://github.com/rust-lang/rust/issues/74990
- [**Tracking Comment**](https://github.com/rust-lang/rust/issues/74990#issuecomment-1363474839):
> Team member @joshtriplett has proposed to merge this. The next step is review by the rest of the tagged team members:
>
> * [x] @joshtriplett
> * [x] @nikomatsakis
> * [ ] @pnkfelix
> * [x] @scottmcm
> * [x] @tmandry
>
> Concerns:
>
> * docs (https://github.com/rust-lang/rust/issues/74990#issuecomment-1364528477)
>
> Once a majority of reviewers approve (and at most 2 approvals are outstanding), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up!
>
> cc @rust-lang/lang-advisors: FCP proposed for lang, please feel free to register concerns.
> See [this document](https://github.com/rust-lang/rfcbot-rs/blob/master/README.md) for info about what commands tagged team members can give me.
- [**Initiating Comment**](https://github.com/rust-lang/rust/issues/74990#issuecomment-1363474832):
> Shall we stabilize the `extern "C-unwind"` and other `-unwind` calling conventions? This change will leave `extern "C"` unchanged for now, but have the existing feature gate continue to opt into the new behavior on nightly. We'll do a separate change later to make `extern "C"` and similar not permit unwinding.
>
> @rfcbot merge
### "Stabilise inline_const" rust#104087
- **Link:** https://github.com/rust-lang/rust/pull/104087
- [**Tracking Comment**](https://github.com/rust-lang/rust/pull/104087#issuecomment-1350231887):
> Team member @scottmcm has proposed to merge this. The next step is review by the rest of the tagged team members:
>
> * [x] @cramertj
> * [x] @joshtriplett
> * [x] @nikomatsakis
> * [ ] @pnkfelix
> * [x] @scottmcm
>
> Concerns:
>
> * expectations-around-panics-in-inline-const (https://github.com/rust-lang/rust/pull/104087#issuecomment-1379582240)
> * post-monomorphization-errors (https://github.com/rust-lang/rust/pull/104087#issuecomment-1409927203)
>
> Once a majority of reviewers approve (and at most 2 approvals are outstanding), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up!
>
> cc @rust-lang/lang-advisors: FCP proposed for lang, please feel free to register concerns.
> See [this document](https://github.com/rust-lang/rfcbot-rs/blob/master/README.md) for info about what commands tagged team members can give me.
- [**Initiating Comment**](https://github.com/rust-lang/rust/pull/104087#issuecomment-1350231871):
> Restarting the FCP from https://github.com/rust-lang/rust/pull/104087#issuecomment-1315946122
>
> @rfcbot fcp merge
tmandry: Just posted a [comment](https://github.com/rust-lang/rust/pull/104087#issuecomment-1410921524) to the thread about the fact that we don't error if there's a const eval error on an unused function, since the const blocks never get evaluated. I think we should error. But how do we make transition? This is existing behavior. Also a question of whether it should block inline const stabilization.
My recommendation is that we should add a lint and make it an error in the edition. I wouldn't block stabilization on it, but it is higher priority because of inline const.
joshtriplett: Can you clarify what you mean by not blocking?
tmandry: Don't have to wait for this lint to be implemented before stabilizing inline const.
joshtriplett: If we were proposing to do it as a lint, I'd agree, but I think it should just be an error. If we want it to be an error, I don't think we can reasonably do that later, it'd be a breaking change.
scottmcm: It's already a breaking change.
tmandry: Right, unless we limit it to inline const blocks, if that's even possible. That's why I advocated for changing behavior over an edition.
garyguo: I think there's two aspects of this. Dead code, and opt related. Oli has a PR to address the behavior in terms of "monomorphizing check mode" that does some of this. I think this should prob be in a design meeting with oli/ralf/me and other interested parties.
joshtriplett: +1, I think it suffices for this meeting to say that current behavior isn't in consensus on shipping
scottmcm: I like the point that making mono smarter or less smart is potentially a breaking change in the current rules. Moving towards a world where we can't accidentally break code because we monomorphized more makes sense to me. Lint that we start doing seems entirely reasonable.
garyguo: Not sure if it's breaking, since we do have the stable "link dead code" option, might be something we can do with a crater run.
nikomatsakis: who will file design meeting?
tmandry: could lump this in with the general post-monomorphization error meeting I intend to follow.
nikomatsakis: is it close enough that it makes sense to do together?
tmandry: maybe.
pnkfelix: comment you wrote in the issue says that, the fact that `-C link-dead-code` can cause an error-- does it consistently cause an error in the example you gave?
tmandry: yes.
garyguo: eager mode fires an error, but lazy does not.
nikomatsakis: +1 to design meeting, prob 1 is enough.
tmandry: one is "post monomorphization errors" whereas this is really about functions that are unused and happen to use const. Not really monomorphization specific.
garyguo: From compiler perspective, tied to monomorphization.
tmandry: right, in compiler, we use monomorphization for dead code even without generics.
pnkfelix: we have to be careful, we want to permit working backwards from main and not forcing us to search all the code for potential errors.
joshtriplett: we need a clear statement then to define our expectation for reachability.
### "Relax ordering rules for `asm!` operands" rust#105798
- **Link:** https://github.com/rust-lang/rust/pull/105798
- [**Tracking Comment**](https://github.com/rust-lang/rust/pull/105798#issuecomment-1397842231):
> Team member @joshtriplett has proposed to merge this. The next step is review by the rest of the tagged team members:
>
> * [x] @joshtriplett
> * [ ] @nikomatsakis
> * [ ] @pnkfelix
> * [ ] @scottmcm
> * [x] @tmandry
>
> No concerns currently listed.
>
> Once a majority of reviewers approve (and at most 2 approvals are outstanding), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up!
>
> cc @rust-lang/lang-advisors: FCP proposed for lang, please feel free to register concerns.
> See [this document](https://github.com/rust-lang/rfcbot-rs/blob/master/README.md) for info about what commands tagged team members can give me.
- [**Initiating Comment**](https://github.com/rust-lang/rust/pull/105798#issuecomment-1397842217):
> Sorry for the delay in reviewing. This looks great! I think this technically needs an FCP (since it changes the stable interface), but I don't expect it to be a controversial one at all.
>
> @rfcbot merge
### "Properly allow macro expanded `format_args` invocations to uses captures" rust#106505
- **Link:** https://github.com/rust-lang/rust/pull/106505
- [**Tracking Comment**](https://github.com/rust-lang/rust/pull/106505#issuecomment-1402511990):
> Team member @scottmcm has proposed to merge this. The next step is review by the rest of the tagged team members:
>
> * [x] @joshtriplett
> * [ ] @nikomatsakis
> * [ ] @pnkfelix
> * [x] @scottmcm
> * [ ] @tmandry
>
> Concerns:
>
> * please-link-tests (https://github.com/rust-lang/rust/pull/106505#issuecomment-1402543049)
>
> Once a majority of reviewers approve (and at most 2 approvals are outstanding), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up!
>
> cc @rust-lang/lang-advisors: FCP proposed for lang, please feel free to register concerns.
> See [this document](https://github.com/rust-lang/rfcbot-rs/blob/master/README.md) for info about what commands tagged team members can give me.
- [**Initiating Comment**](https://github.com/rust-lang/rust/pull/106505#issuecomment-1402511930):
> We discussed this in the lang team meeting today. Broadly we thought that proc macros being able to emit tokens that use captures makes logical sense. Basically, a proc macro *emitting* something as a whole that one could write directly, as in https://github.com/rust-lang/rust/pull/106505/files#diff-868206cf54a88d81468a76d45e639cea40c537f2031d19f06c114e3cb329a426R44, seems entirely fine, though mixing things like `format!(concat!(…))` might still be best to reject.
>
> So I'll start a
>
> @rfcbot fcp merge
>
> but we had some requests to confirm, so...
concern potentially resolved!
## Active FCPs
None.
## P-critical issues
None.
## Nominated RFCs, PRs and issues discussed this meeting
### "Stabilise inline_const" rust#104087
**Link:** https://github.com/rust-lang/rust/pull/104087
Defer to design meeting.
### "Mark RFC 1201 (naked functions) superseded by RFC 2972 (constrained naked functions)" rfcs#3223
**Link:** https://github.com/rust-lang/rfcs/pull/3223
scottmcm to author suggestion then merge.
### "The `#[diagnostic]` attribute namespace" rfcs#3368
**Link:** https://github.com/rust-lang/rfcs/pull/3368
scottmcm: design meeting?
joshtriplett: not yet. recently reworked. let's discuss if we're comfortable with this namespace. by a week and a day from now, we'll prob be ready to schedule a design meeting, so let's ask them if they'd like to.
I think a lot of this has basically been pitched. The premise is very much "we still review individual proposals for attributes, this is just trying to handle forward compatibility reasonably".
**I propose: folks read the RFC and decide if it does what they want it to do, and only use a design meeting if we're not in agreement.**
### "Implement a lint for implicit autoref of raw pointer dereference " rust#103735
**Link:** https://github.com/rust-lang/rust/pull/103735
scottmcm: I commented I was going to unnominate but hadn't, so skip this.
### "Allow only implementing `Read::read_buf`" rust#106643
**Link:** https://github.com/rust-lang/rust/pull/106643
joshtriplett: Un-nominated since we are waiting on a draft. Somebody filed a tracking issue with a detailed description of the behavior.
scottmcm: I'm confused about use case.
joshtriplett: Specific use case is that people want to stabilize `read_buf` and require people to implement *either* read or read-buf but not both.
The issue right now is not if we want to stabilize "must implemented one of". The question ins: how much do we want to see happen before we let anybody stabilize `read_buf` such that there's a dependence on something like this in the stdlib?
scottmcm: A few years ago we had a problem where something got stabilized thanks to library. I think we need a reference PR before we can stabilize first method using this.
nikomatsakis: Reference PR for what? Not stabilizing the attribute what. We're stabilizing, in effect, a special rule for the read trait?
joshtriplett: I get the point that if we are stabilizing something that depends on it -- sounds like you're saying you're fine to apply it in nightly, but you want to block stabilizing.
nikomatsakis: Just saying that we don't normally document unstable things, so we would normally document this as a special behavior of the `Read` trait.
scottmcm: Yes, this is a visible thing that ought to have something documented, like the const thing we did some time back (but unfortunately didn't document).
pnkfelix: Have to make sure that every trait that uses the attribute documents that behavior, right?
nikoamtsakis: Yes. May be worth adding some note to the reference that "some traits have this behavior"
pnkfelix: Not convinced that's useful, most important thing is to document it on the trait.
scottmcm: *something about stability that Niko didn't catch*
joshtriplett: Any objection to adding this to nightly now? All objections are related to stabilization, correct?
nikomatsakis: I am happy with the tracking issue which was created, it follows our experimental procedure.
scottmcm: correct. I'll add a note to the tracking issue for read-buf to note that we want to consider this before stabilizing.
nikomatsakis: side note that this situation comes up regularly and would be a nice language feature.
### "Discuss subteam calendars" lang-team#192
**Link:** https://github.com/rust-lang/lang-team/issues/192
joshtriplett: Style team has a calendar. Some subteam meetings show up on t-lang, some have their own. How do we want to handle this? I think it makes sense to say "no subteam meetings appear on t-lang" and have links from the same place for each subteam...?
nikomatsakis: I'm in camp "fewer calendars", as people have trouble finding the ones that exist...
joshtriplett: ...but other people aren't aware of those meetings...
pnkfelix: ...I think T-compiler has just one.
tmandry: I can relate to wanting some but not all events on my calendar.
joshtriplett: Yes, I wish there were better tools for having all calendars.
tmandry: the only way to get other people to know I am busy is to put me on the invite. Doesn't solve that problem.
nikomatsakis: what other subteams do we have?
joshtriplett: types, opsem, style...?
nikomatsakis: I don't care much, but we should at LEAST have a link with the calendars in use by each team.
pnkfelix: would be great to have it be part of the teams repo.
all: yes.
### "Introduce terminating scope for tail expressions of breakable scopes" rust#106493
**Link:** https://github.com/rust-lang/rust/pull/106493
nikomatsakis: general problem being addressed is...
```rust
let f = something().bar(); // where bar is `&self`
// ^^^^^^^^^^^ creates a temporary
```
* this temporary is freed at end of the innermost statement
* actually a simplification, there are other scopes --
* condition of an if
* etc
* [documented here](https://doc.rust-lang.org/stable/reference/destructors.html#temporary-scopes)
* *unless* it is assigned directly into a local variable, according to various rules
* `let f = &something()`
* `something()` is a temporary, but because it is clearly assigned into `f`, we extend that to the end of the enclosing block
Interesting twist:
```rust
{
statement1;
statement2;
tail_expression // <--
}
```
temporary scope in the tail-expression is the same as the temporary scope of the block itself
```rust
let x = &{
something() // <-- also create a temporary dropped at the end of the block
};
```
I think this was probably a mistake, but it is what we do now.
[Docs on these rules.](https://doc.rust-lang.org/stable/reference/destructors.html#temporary-scopes)
I'm worried because there can be really subtle bugs for effectful destructors. Classic bug I'd like to see addressed is this:
```rust
match foo().lock().bar {
// ^^^^^^^^^^^ dropped at end of statement
...
arm => {
foo().lock().baz += 1; // deadlock
}
...
}
```
but that's independent from this PR.
Conclusion: this PR changes because of breakable scopes.
True best path: we should address these rules for the edition.
nikomatsakis: I can at least ping the PR author and see if they're willing to pursue a rationalization here for edition.
### "make &mut !Unpin not dereferenceable, and Box<!Unpin> not noalias" rust#106180
**Link:** https://github.com/rust-lang/rust/pull/106180
*discussion wherein we read the comments*
*Conclusion:* jakob-degen's comment [here](https://github.com/rust-lang/rust/pull/106180#issuecomment-1370240291) indicates that this is compiler, in that the idea is to stop optimizing as aggressively because we the current optimization is not sound. It is not deciding language semantics or permissible unsafe code. Therefore, we are happy for the time being with the PR.
*Some debate about what our general policy should be.* Niko advocates for 'reliable first', de-optimize until we know when we can, but there is some concern about unsafe code authors relying on the LLVM attributes we emit not to change. This case is specific to Unpin and so affects primarily async + code like Rust For Linux.
### "Tracking issue for deprecation lint `proc_macro_derive_resolution_fallback`" rust#83583
**Link:** https://github.com/rust-lang/rust/issues/83583
pnkfelix: I filed [design mtg proposal](https://github.com/rust-lang/lang-team/issues/193) for this, and removed the I-lang-nominated label. no need to discuss in mtg.
## Nominated RFCs, PRs and issues NOT discussed this meeting
### "RFC: Start working on a Rust specification" rfcs#3355
**Link:** https://github.com/rust-lang/rfcs/pull/3355
### "inline_const does not evaluate in unused function" rust#106617
**Link:** https://github.com/rust-lang/rust/issues/106617