---
title: Triage meeting 2021-03-30
tags: triage-meeting
---
# T-lang meeting agenda
* Meeting date: 2021-03-30
## Attendance
* Team members: Scott, Taylor, Josh, Felix
* Others: simulacrum
## Meeting roles
* Action item scribe: simulacrum
* Note-taker: nikomatsakis
## Scheduled meetings
- "How to dismantle an `&Atomic` bomb." [lang-team#82](https://github.com/rust-lang/lang-team/issues/82)
- a blog post is available on felix's blog, if you want to read it
- but felix is working on a condensed write-up
Completed:
- "2021 idiom lint overview" [lang-team#83](https://github.com/rust-lang/lang-team/issues/83)
- "RFC backlog bonanza recap" [lang-team#84](https://github.com/rust-lang/lang-team/issues/84)
- "lang team reorg: shepherds 4.0, triage update" [lang-team#85](https://github.com/rust-lang/lang-team/issues/85)
## 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
- Niko sent messages encouraging a summary of the zulip thread
- Goal is to get a design note summary
- Niko notes that we have pending design notes PRs
## Nominated RFCs
No nominated RFCs this time.
## 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
- Lang-team decision needed: confirm that we want to restrict either the existence of `fn() -> Out` where `Out: ?Sized`, or that we want such types to not impl `FnOnce`.
- rfcbot poll: https://github.com/rust-lang/rust/issues/82633#issuecomment-810416081
- esteban had volunteered to do work in this regard, left a comment to ping him
## Nominated PRs and issues on rust-lang/reference
No nominated items this time.
## Nominated PRs and issues on rust-lang/rust
### "Tracking issue for RFC 2457, "Allow non-ASCII identifiers"" rust#55467
**Link:** https://github.com/rust-lang/rust/issues/55467
- FCP merge proposed, un-nominated
- pnkfelix, scottmcm have not checked
- [manish comment](https://github.com/rust-lang/rust/issues/55467#issuecomment-802302837)
- [stabilization report linked in this comment](https://github.com/rust-lang/rust/issues/55467#issuecomment-803202449)
### "Implement new lint for detecting buggy pointer-to-int casts" rust#81789
**Link:** https://github.com/rust-lang/rust/pull/81789
- Prior discussion:
- Consensus that we do not want to flag casts to `u64` (too many false warnings)
- Question for today:
- Do we want the new lint to warn by default?
- Warn when you cast `*const ()` to `u8`, ... `u32`, `u128` -- anything apart from `usize` and `u64`
- Q: Motivation for warning when casting to `u128`?
- Conclusion: Nobody noticed.
- Q: Is this one lint? Does it treat function items and function pointers differently from data pointers?
- Scott observes that casting a function item (e.g., `u64::max_value as u64`) gives you the `u64` of the function pointer, and not the max-vaue of `u32`.
- The actual bug that is being fixed is this specific case -- casting a function item to an integer.
- Could special case functions whose return type is `u64` (*pnkfelix: or any uN/fN kind*) and flag it; could imagine heuristics for "functions you are less likely to want to convert to a function pointer".
- Niko observes that `usize::max_value as usize` would also be error-prone.
- Could we have some alternative, non-as based way to do this? Perhaps a function, and then we can lint more aggressively on `as`?
- Scott observes that if you want a pointer from an array you do `as_ptr`, not cast it.
- Josh proposes:
- We probably want *this* lint
- But it sounds like it does not address the original issue and therefore we probably want a second lint as well
- Scott: can we make the PR not declare that it 'fixes' the issue?
- Action item: Scott to change the OP and clarify how this PR fails to address the issue (even though it is a good change)
- Scott: should this be target dependent? If I were on a 32-bit platform, this would be noisy.
- Josh: last time we discussed saying that people on 32-bit platforms can `#![allow]` the lint.
- But this does kind of go against our "avoid false warnings" policy, at least on those platforms.
- Question is basically how likely is this to be a bug?
- Feels like it's kind "noisy and heuristicy", since the code is sometimes correct
- Confusions
- I meant to call a function but I got a function pointer
- I meant to reference a similarly named constant
- I meant to dereference a pointer (and then convert the resulting data)
- I accidentally wrote non-portable code by casting to u32
- Use cases people want to do
- taking the low bits of a pointer (will never be used as a pointer again)
- getting the pointer as an integer (may turn back into a pointer)
- using u64 as a "big enough for a pointer on any platform" with a fixed size (happens e.g. in the linux kernel)
- I'm on Win32 and writing `as DWORD`
- Precedent around portability?
- example: we don't let you index with u32 even though on a 32-bit platform it'd be fine
- feels different because we don't permit it with u64 too
- Mark question: is this a lint?
- Procedural question:
- In previous meeting, we had a consensus, but of course now we seem to be revisiting it.
- Why did folks change their minds?
- cramertj: I was focused before just on the question of "pointer to u64" being ok, not the overall context of the lint in general
- I was not aware of the full context, that it didn't address the spirit of the problem described in the original issue
- Clippy's big list of lints, with what it's for and what you should use instead https://rust-lang.github.io/rust-clippy/master/index.html
- Niko: I was thinking that it might be useful in the future to create a kind of "lint proposal" that indicates "what is the user confusion we are trying to address" and "what should user do instead"
- Proposal:
- Discuss more on the issue
### "Turn old edition lint (anonymous-parameters) into warn-by-default on 2015" rust#82918
**Link:** https://github.com/rust-lang/rust/pull/82918
- FCP merge proposed, un-nominated
- not checked: pnkfelix, scottmcm, cramertj
- scott: this is just "use `_: Foo` and not just `Foo`, right?"
- Answer: yes.
### "Use const generics for stdarch intrinsics" rust#83167
**Link:** https://github.com/rust-lang/rust/issues/83167
* Still awaiting input and opinions from users; left some comments.
### "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
* Outcome of our "lint review" process
* An error to write `Trait` and not `dyn ` (in Rust 2021)
* An error to write `...` and not `..=` (in Rust 2021)
* One potential complication:
* If macro-rules from 2018 crates generates a bare trait reference, that should not be an error
* Proposal fcp to merge
* with caveat that we use the spans of `Trait` and `...`
* with a concern that we should tie the edition to the specific span
* Note:
* we should specify what span do we derive the error from when we accept RFCs etc
### "Stabilize extended_key_value_attributes" rust#83366
**Link:** https://github.com/rust-lang/rust/pull/83366
* There is a stabilization report (huzzah)
* Major use case: ability to do `include_str!` on doc; this is an alternative to the `doc::include` mechanism
* cramertj: as a user, this feels like eager expansion, was there an RFC?
* came from [PR #78837](https://github.com/rust-lang/rust/pull/78837)
* [writeup is this blog post on internals](https://internals.rust-lang.org/t/macro-expansion-points-in-attributes/11455)
* Josh: difference between this and eager expansion is that it is primarily targeting "inert attributes" like doc
* cramertj: but as a user of procedural macros, the difference is not obvious; feels surprising that I can pass it in others
* petrochenkov had [two questions](https://github.com/rust-lang/rust/pull/83366#issuecomment-805180738) to be considered
### "`#[repr(align(8))]` is not accepted for arrays" rust#83595
**Link:** https://github.com/rust-lang/rust/issues/83595
## Extra item
### k#keywords for
* RFC https://github.com/rust-lang/rfcs/pull/3098 would need to be accepted soon
* Question
* In previous editions (2015, 2018), do we want some *alternative* syntax (e.g., `r#$foo`).
* Josh: Would like to have this defined in the RFC (not just as a "we could")
* Possible extension
* Can reserve `[a-zA-Z_]#keyword` in general
* Can reserve `[a-zA-Z_]"string"` in general
Extra change:
- `b"asdf"` being one token and `a"asdf"` being two is weird, so we can just make the lattter a tokenization error, freeing up space for future extension.