---
title: Triage meeting 2022-05-31
tags: triage-meeting
---
# T-lang meeting agenda
* Meeting date: 2022-05-31
## Attendance
* Team members: pnkfelix, joshtriplett
* Others: simulacrum
## Meeting roles
* Action item scribe: simulacrum
* Note-taker: pnkfelix
## Additional agenda items
- Kangrejos - Rust in Linux conference (workshop/summit), in Spain in mid-August (after RustConf)
- planned in-person; no known plan to support hybrid for this specific event
- Unwinding from Drop impl
- Amanieu seeking next steps on this
- Rough consensus: we need a clear story for what should be done by applications that want to never stop (e.g. web servers catching panics within requests and returning 500 Internal Server Error)
- cfg_accessible being worked on
- https://github.com/rust-lang/rust/pull/97391
- May allow unblocking cfg_accessible
- Discussion of certain implementation details, relating to trying to use feature in current-crate
- Josh points out that the main use-case for this feature is for conditionalizing on accessibilty from *other crates*, so we would be happy if this feature simply errored out with "not supported" if you tried to apply it to something in the current crate.
## Action item review
* [Action items list](https://hackmd.io/gstfhtXYTHa3Jv-P_2RK7A)
## Pending lang team project proposals
### "Deprecate target_vendor " lang-team#102
**Link:** https://github.com/rust-lang/lang-team/issues/102
### "Support platforms with size_t != uintptr_t" lang-team#125
**Link:** https://github.com/rust-lang/lang-team/issues/125
### "Positional Associated Types" lang-team#126
**Link:** https://github.com/rust-lang/lang-team/issues/126
### "Interoperability With C++ Destruction Order" lang-team#135
**Link:** https://github.com/rust-lang/lang-team/issues/135
### "allow construction of non-exhaustive structs when using functional update syntax" lang-team#143
**Link:** https://github.com/rust-lang/lang-team/issues/143
### "Add #[deprecated_safe] attribute to allow functions be be marked unsafe in a backwards compatible fashion" lang-team#147
**Link:** https://github.com/rust-lang/lang-team/issues/147
### "Async fns in traits" lang-team#150
**Link:** https://github.com/rust-lang/lang-team/issues/150
### "dyn* trait" lang-team#158
**Link:** https://github.com/rust-lang/lang-team/issues/158
### "Initiative: `?` traits, `try` blocks, `yeet` exprs, oh my" lang-team#160
**Link:** https://github.com/rust-lang/lang-team/issues/160
### "Initiative: Ghost types and blocks" lang-team#161
**Link:** https://github.com/rust-lang/lang-team/issues/161
### "Keyword generics" lang-team#162
**Link:** https://github.com/rust-lang/lang-team/issues/162
### "Add const evaluatable `where const { <block> }`" lang-team#163
**Link:** https://github.com/rust-lang/lang-team/issues/163
## PRs on the lang-team repo
None.
## RFCs waiting to be merged
None.
## Proposed FCPs
**Check your boxes!**
### "Refined trait implementations" rfcs#3245
**Link:** https://github.com/rust-lang/rfcs/pull/3245
- [**Tracking Comment**](https://github.com/rust-lang/rfcs/pull/3245#issuecomment-1116370994):
> Team member @nikomatsakis has proposed to merge this. The next step is review by the rest of the tagged team members:
>
> * [x] @cramertj
> * [ ] @joshtriplett
> * [x] @nikomatsakis
> * [x] @pnkfelix
> * [ ] @scottmcm
>
> Concerns:
>
> * unresolved-question-for-next-edition (https://github.com/rust-lang/rfcs/pull/3245#issuecomment-1116371336)
>
> 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!
>
> 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/3245#issuecomment-1116370985):
> @rfcbot fcp merge
>
> I think we've got consensus on most of this here -- the main question is whether, in the next edition, `#[refine]` ought to be required in order to see the effects of the change or optional (perhaps with a lint). I'm going to separate propose a concern to move this to an unresolved question, I dont' see why it should block this RFC from going forward now.
### "Stabilize `let else`" rust#93628
**Link:** https://github.com/rust-lang/rust/pull/93628
- [**Tracking Comment**](https://github.com/rust-lang/rust/pull/93628#issuecomment-1029383585):
> Team member @joshtriplett has proposed to merge this. The next step is review by the rest of the tagged team members:
>
> * [x] @cramertj
> * [x] @joshtriplett
> * [x] @nikomatsakis
> * [x] @pnkfelix
> * [ ] @scottmcm
>
> Concerns:
>
> * need-consistency-rvalue-temporary-rules-between-let-and-let-else (https://github.com/rust-lang/rust/pull/93628#issuecomment-1055738523)
> * ~~not-while-rustfmt-breaks-on-it~~ resolved by https://github.com/rust-lang/rust/pull/93628#issuecomment-1032936704
> * ~~semicolon~~ resolved by https://github.com/rust-lang/rust/pull/93628#issuecomment-1059799661
> * ~~stabilization-report~~ resolved by https://github.com/rust-lang/rust/pull/93628#issuecomment-1033846359
> * ~~summarize-concerns~~ resolved by https://github.com/rust-lang/rust/pull/93628#issuecomment-1056785904
>
> 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!
>
> 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/93628#issuecomment-1029383577):
> Shall we stabilize `let else` syntax? We've had many demonstrated uses, including extensively throughout `rust-lang/rust`, we've seen the value of it, and there aren't any known issues with it.
>
> @rfcbot merge
## Active FCPs
### "Lang: Stabilize usage of rustc_nonnull_optimization_guaranteed on -1" rust#97122
**Link:** https://github.com/rust-lang/rust/issues/97122
- scottmcm: Where are these types exposed?
- `std::os::unix::io`
### "Deprecate target_vendor " lang-team#102
**Link:** https://github.com/rust-lang/lang-team/issues/102
### "Positional Associated Types" lang-team#126
**Link:** https://github.com/rust-lang/lang-team/issues/126
### "Interoperability With C++ Destruction Order" lang-team#135
**Link:** https://github.com/rust-lang/lang-team/issues/135
### "allow construction of non-exhaustive structs when using functional update syntax" lang-team#143
**Link:** https://github.com/rust-lang/lang-team/issues/143
### "Add #[deprecated_safe] attribute to allow functions be be marked unsafe in a backwards compatible fashion" lang-team#147
**Link:** https://github.com/rust-lang/lang-team/issues/147
### "Async fns in traits" lang-team#150
**Link:** https://github.com/rust-lang/lang-team/issues/150
### "Initiative: `?` traits, `try` blocks, `yeet` exprs, oh my" lang-team#160
**Link:** https://github.com/rust-lang/lang-team/issues/160
### "Initiative: Ghost types and blocks" lang-team#161
**Link:** https://github.com/rust-lang/lang-team/issues/161
### "Keyword generics" lang-team#162
**Link:** https://github.com/rust-lang/lang-team/issues/162
## P-critical issues
None.
## Nominated RFCs, PRs and issues discussed this meeting
### "Stabilize `$$` and `${ignore}` in Rust 1.62.0" rust#95860
**Link:** https://github.com/rust-lang/rust/pull/95860
* CAD97 had some concerns
* CAD97 pointed out that josh themself [got the syntax wrong](https://github.com/rust-lang/rust/pull/95860#issuecomment-1139881538) when interacting on issue; this gave them pause: Is this a sign that the syntax is itself overly confusing?
* scottmcm is not sure we should read too much into that
* (the specific concern is the use of `$op(var)` rather than `$op($var)`, since the latter is what many will expect): conflicting mental models of "`$var` is how you name a metavariable" versus "`$var` is the expansion of the metavariable var."
* scottmcm: will we ever want random tokens in the input to `$ignore(..)`, or is it always going to be restricted to just metavariables?
* scottmcm: should we ask a libs expert about this?
* josh: why would this be a libs matter?
* scottmcm: "libs" is a placeholder for "person who writes macros a lot"; e.g. dtolnay.
* scottmcm: but maybe such people aready weighed in on the RFC?
* simulacrum: was the alternative discussed on the RFC?
* josh: don't think so
* simulacrum: requiring the dollar sign would be backwards compatible with allowing it to be dropped.
* josh: the real point is that its an error to include the dollar sign in the first place
* pnkfelix: it comes down to that CAD97 question of what the right mental model is: "`$var` is how you name a metavariable" versus "`$var` is the expansion of the metavariable var."
* pnkfelix: and this sets a precedent, right? This is the first time we're adding this kind of meta-operation.
* josh: could support both options
* scottmcm: or we could add the second option when we have another meta-operation that would motivate such support.
* simulacrum: for now I would suggest changing to requiring `$var` now and not try to accept the other. It seems like the easier way to start, to force people to write the `$` and then if we can justify taking it out later, that will be an easier shift to make.
* pnkfelix: so what would we want if we *were* trying to also adopt the other meta operations like `$count(..)`, `$index(..)`, ...
* https://github.com/markbt/rfcs/blob/macro_metavar_expr/text/0000-macro-metavar-expr.md#guide-level-explanation
* josh: do we think we (subset of T-lang) can actually make a decision in *this* meeting? or should we raise a concern and resolve the matter asynchronously?
* pnkfelix: lets raise a concern.
### “Warn about dead tuple struct fields” rust#95977
Link: https://github.com/rust-lang/rust/pull/95977
- Do we have a migration plan?
- Josh: labeled relnotes, we should mention it in release notes and wait a few releases
- Mark: Should this special case PhantomData? (Mark to post a comment.)
### "Stabilize `let_chains` in Rust 1.63.0" rust#94927
**Link:** https://github.com/rust-lang/rust/pull/94927
* With this, `let x = ...` now gets treated as an expression in terms of how macro expression parsing works.
* https://github.com/rust-lang/rust/pull/97295
* josh: if being conservative in this case is as simple as PR 97295, then I'm going to register that my concern is indeed blocking on landing PR #97295 first.
## Nominated RFCs, PRs and issues NOT discussed this meeting
### "Covariance-related GAT lifetime mismatch" rust#89352
**Link:** https://github.com/rust-lang/rust/issues/89352
### "Neither require nor imply lifetime bounds on opaque type for well formedness" rust#95474
**Link:** https://github.com/rust-lang/rust/pull/95474
### "nested RPIT and HRTB: unclear semantics and future incompatibility" rust#96194
**Link:** https://github.com/rust-lang/rust/issues/96194
### "Change enum->int casts to not go through MIR casts." rust#96862
**Link:** https://github.com/rust-lang/rust/pull/96862
### "Should `repr(transparent)` require *inhabited* 1-ZSTs?" rust#96921
**Link:** https://github.com/rust-lang/rust/issues/96921
### "clarify how Rust atomics correspond to C++ atomics" rust#97516
**Link:** https://github.com/rust-lang/rust/pull/97516
### "Document the effect of main's return value?" reference#1196
**Link:** https://github.com/rust-lang/reference/issues/1196
### "Specify what happens when casting fat pointers more specifically" reference#1206
**Link:** https://github.com/rust-lang/reference/pull/1206