T-lang meeting agenda
Attendance
- Team members: Josh, Felix
- Others: Mark, Lokathor
Meeting roles
- Action item scribe: simulacrum
- Note-taker: Felix
Scheduled meetings
- "Structural equality" lang-team#94
- oli says they plan to have doc ready
Action item review
Pending lang team project proposals
"MCP: Allowing the compiler to eagerly drop values" lang-team#86
Link: https://github.com/rust-lang/lang-team/issues/86
"negative impls integrated into coherence" lang-team#96
Link: https://github.com/rust-lang/lang-team/issues/96
"Trait Upcasting" lang-team#98
Link: https://github.com/rust-lang/lang-team/issues/98
"Discontinue meeting recordings" lang-team#100
Link: https://github.com/rust-lang/lang-team/issues/100
"Deprecate target_vendor " lang-team#102
Link: https://github.com/rust-lang/lang-team/issues/102
"Non exhaustive reachable patterns lint" lang-team#112
Link: https://github.com/rust-lang/lang-team/issues/112
- proposed 6 days ago
- discussed on internals forum in past; just first time its been raised as issue on its own
- proposal for add way to flag match expressions of non-exhaustive enums to still get linting when variant set changes.
PRs on the lang-team repo
"Initial draft of copy ergonomics design note" lang-team#62
Link: https://github.com/rust-lang/lang-team/pull/62
"Autoref/autoderef for operators" lang-team#63
Link: https://github.com/rust-lang/lang-team/pull/63
"Add draft of variadic notes" lang-team#76
Link: https://github.com/rust-lang/lang-team/pull/76
RFCs waiting to be merged
"RFC: Overconstraining and omitting unsafe
in impls of unsafe
trait methods" rfcs#2316
Link: https://github.com/rust-lang/rfcs/pull/2316
"RFC: Supertrait item shadowing" rfcs#2845
Link: https://github.com/rust-lang/rfcs/pull/2845
Proposed FCPs
Check your boxes!
"RFC: Add target
configuration" rfcs#2991
Link: https://github.com/rust-lang/rfcs/pull/2991
- Blocked waiting for author update.
"Tracking issue for RFC 2523, #[cfg(version(..))]
" rust#64796
Link: https://github.com/rust-lang/rust/issues/64796
- Blocked waiting for progress on cfg(accessible(…))
Active FCPs
"Associated functions that contain extern indicator or have #[rustc_std_internal_symbol]
are reachable" rust#86492
Link: https://github.com/rust-lang/rust/pull/86492
"Allow reifying intrinsics to fn
pointers." rust#86699
Link: https://github.com/rust-lang/rust/pull/86699
"negative impls integrated into coherence" lang-team#96
Link: https://github.com/rust-lang/lang-team/issues/96
- Need a liaison for this; Niko will be an owner.
- Felix is willing, but we should see who on the team actively wants to be.
"Trait Upcasting" lang-team#98
Link: https://github.com/rust-lang/lang-team/issues/98
- Has been seconded for long time.
- Under new lang-team initiative process, need to identify who will be liason
- Josh (who seconded proposal) is willing to be liaison but thinks Niko would be a better choice
- Does niko want to be the liaison (was listed under "People Involved")
"Discontinue meeting recordings" lang-team#100
Link: https://github.com/rust-lang/lang-team/issues/100
- Felix takes action item to update team documentation to reflect change in practice here (meetings are now by default not recorded, except for cases where we are specifically inviting someone for a recorded session).
"Non exhaustive reachable patterns lint" lang-team#112
Link: https://github.com/rust-lang/lang-team/issues/112
P-critical issues
None.
Nominated RFCs, PRs and issues
"Tracking issue for RFC 2294, "if let guard"" rust#51114
Link: https://github.com/rust-lang/rust/issues/51114
- A number of
if let
proposals lately
- This one changes match arms so that their guard can carry an
if let
instead of an if
- Felix takes action item to figure out what problem, if any, needs to be solved here, and then bring back to a subsequent meeting.
"Allow limited transmuting between types involving type parameters" rust#86281
Link: https://github.com/rust-lang/rust/pull/86281
- Previously discussed at prior meeting.
- Waiting for summary comment from scottmcm.
- Josh will drop I-nominated and leave note saying that scottmcm will write up summary.
"Allow reifying intrinsics to fn
pointers." rust#86699
Link: https://github.com/rust-lang/rust/pull/86699
- Nominated for and entered FCP one week ago.
- New question from eddyb 3 hours ago
- eddyb's Q: should the reification of
transmute
be special-cased, to either be feature-gated, or outright hard-errored?
- josh: not sure why we would do that https://github.com/rust-lang/rust/pull/86699#issuecomment-887568940
- felix: wasn't motivation to avoid insta-stabilization?
- josh: sounds like motivation for outright feature-gate of the reification operation
- simulacrum: we didn't feature-gate this because we wanted to make use of it immediately.
- felix: ?
- simulacrum: remember, copy/copy_nonoverlapping changed from wrapper functions to intrinsics. So for stability, when copy/copy_nonoverlapping become intrinsics, we need to support reifying those two intrinsics at a minimum.
- felix: okay. Sounds like choices are either: 1. an allowlist for copy/copy_nonoverlapping, 2. a denylist for transmute, or 3. just don't feature-gate reification of any intrinsic at all.
- lokathor:
fn transmute_foo<T, U>(v: T) -> U {
std::intrinsics::transmute(v) // ERR: v is generic...
}
- josh: okay. so you cannot make generic wrapper around transmute due to that restriction (and thus cannot construct function pointers for arbitrary generic wrapper around transmute, since they cannot exist). But specific instantiations can become function pointers
- lokathor: right. e.g.
transmute::<i8,u8>
could be reified.
- felix: proposal: we should allowlist just the copy/copy_nonoverlapping case, in order to make the insta-stable changes here as narrow as possible
- josh: I just posted comment to that effect. Please double check that comment.
"Support #[track_caller]
on closures and generators" rust#87064
Link: https://github.com/rust-lang/rust/pull/87064
- Certianly would be useful.
- simulacrum had asked for clarification of a couple points.
- (some discussion of whether the
track_caller
annotation could work for functions via Fn
/FnOnce
/FnMut
)
- Mark will follow up to clarify the specific asks that Mark had put forawrd in their previous comment.
Link: https://github.com/rust-lang/rust/pull/87220
"Stabilize built-in attribute macro #[cfg_eval]
" rust#87221
Link: https://github.com/rust-lang/rust/pull/87221
"Niches of Cell
and others still not hidden" rust#87341
Link: https://github.com/rust-lang/rust/issues/87341
"Make SEMICOLON_IN_EXPRESSIONS_FROM_MACROS
warn by default" rust#87385
Link: https://github.com/rust-lang/rust/pull/87385
- This is a lint to guide users to remove semi-colon from their macro-definitions, so that we can, in the future, not have to magically remove the semi-colon during expansion.
- In order to narrow the scope of user-unactionable warnings, it only fires for expression-position macro uses in same-crate that run into the magic semi-colon deletion.
- lokathor: would this fire for unit tests? Don't those get compiled into separate crate?
- josh: sounds like it wouldn't fire there, given its focus on same crate triggering
- (some discussion of motivation for the same-crate rule)
- josh: could use cap-lints as basis for diagnostic
- simulacrum: not ideal; don't want build cap-lints into meta-data for a crate
- josh: unfortunate that we cannot determine instances of this without expanding macro first, since that would help us reduce instances
- josh: seems next step is to FCP
- simulacrum: do we need to FCP? This is just increasing a lint level
- josh: indeed, seems like an easily reversed change. Under new policy, we could just move ahead based on meeting participants not objecting.
- lokathor: ultimately just a warning, and we tell people not to deny warnings.