---
title: Planning meeting 2024-03-06
tags: ["T-lang", "planning-meeting", "minutes"]
date: 2024-03-06
discussion: https://rust-lang.zulipchat.com/#narrow/stream/410673-t-lang.2Fmeetings/topic/Planning.20meeting.202024-03-06
url: https://hackmd.io/pKJu7TqtQHqOfaOXtZBw8w
---
# T-lang planning meeting agenda
- Meeting date: 2024-03-06
## Attendance
- People: TC, pnkfelix, scottmcm, Josh, nikomatsakis, eholk, Lukas Wirth, Xiangfei Ding, CE
## Meeting roles
- Minutes, driver: TC
## Proposed meetings
- "We need to settle the behaviour of floating-point in `const`" [#222](https://github.com/rust-lang/lang-team/issues/222)
- "discuss/resolve `fn { mod { (use) super::...; } }` and its interaction with derive patterns" [#193](https://github.com/rust-lang/lang-team/issues/193)
- "Design meeting: Rust issues encountered by new Rust users in the Bevy project" [#229](https://github.com/rust-lang/lang-team/issues/229)
- "Design meeting: Profiles" [#245](https://github.com/rust-lang/lang-team/issues/245)
- "Nail down cargo-script syntax proposal" [#232](https://github.com/rust-lang/lang-team/issues/232)
Please update these in https://github.com/orgs/rust-lang/projects/31/views/7.
## Availability
- 13th (probably fine).
- Never type.
- scottmcm probably unavailable.
- 20th (possible for a narrow item that doesn't need the missing folks).
- Bonus triage meeting.
- We'll ask Peter if he wants to put something together for us on the new range types.
- joshtriplett likely unavailable (traveling for RustNation).
- nikomatsakis: not impossible but difficult.
- 27th (canceled).
- joshtriplett likely unavailable (RustNation).
- nikomatsakis: nope.
- tmandry unavailable.
## Topics
- The never type.
- New range types for Edition 2024.
- nikomatsakis: we will need data for this to be a productive meeting.
## New range types
NM: Let's reach out to the author of the RFC and see whether that person would be interested in pulling together this data for a design meeting.
SM: Mara's concern: <https://github.com/rust-lang/rfcs/pull/3550#issuecomment-1919054372>
These were the asks that we made:
> One, we wanted the proposed "ask" of crate maintainers to be articulated. What would our guide say exactly about how library authors should handle this change, including for potentially trickier cases such as `Index`?
>
> Two, we wanted some data to be collected about the impact here. Specifically:
>
> * How often is each range type used concretely by name in crates and in which positions (i.e., in fn arguments, struct fields, `Index` impls, other impls)?
>
> * In particular, this may be relevant how often `Range` vs `RangeInclusive` is used concretely; we expect the latter may be more rare.
> * How often are the range traits used and in which positions?
> * How often do people use `..` vs `..=` syntax?
>
> (The feeling was that the first of these questions was the most important. We discussed that it may be possible to use crater to answer these.)
>
> Three, we wanted to know whether there is any proposed solution that, for library authors staying on the older edition, would require them to do _no_ work to best support users on a newer edition. We acknowledged that such a solution, if it exists, may be undesirable in other ways, but we at least wanted to see what the tradeoffs might be.
## The Never type
CE: It seems we need to start from scratch here.
NM: It seems that meeting all the desiderata here is simply impossible. We need to revisit the constraints and see which are most important and which can be dropped.
Patterns like this...
```rust
fn foo<T>() -> impl Fn() -> T {
}
foo(|| panic!()) // if this falls back to !, and ! gets coerced to `_`, can be an issue
```
nikomatsakis: Roughly speaking the 4 constraints/goals are:
* Fallback to `!` most of the time.
* Common situations (e.g., the one above) don't get unbound inference variables.
* Avoid unsoundness or at least lint in existing code, not easy to shoot yourself in the foot.
* Unify with `Infallible`.
* Fallback rules can be remembered and understood and are reasonably simple to explain (simulacrum's earlier designs arguably achieved the previous 4, but definitely not this one).
...but I think there are maybe even more -- like, what is the usability patterns that we are trying to achieve with this design *anyway*?
As an example: I think that the "residual" enum pattern for `Try` is an important use case that wasn't obvious when we started (though we certainly did have in mind "selecting out" variants, and that's basically what it is).
## Possible RFC reads
https://github.com/rust-lang/rfcs/pulls?q=is%3Apr+is%3Aopen+label%3AT-lang+
- Deprecate `static mut`
- Others?
### "Lang-team RFC guidelines appear to be out of date" lang-team#244
**Link:** https://github.com/rust-lang/lang-team/issues/244
### "Lang discussion: Item-level `const {}` blocks, and `const { assert!(...) }`" lang-team#251
**Link:** https://github.com/rust-lang/lang-team/issues/251
### Bonus triage
TC: Our backlog is building up, we could do an extended triage.
## Active initiatives
### "project-safe-transmute" lang-team#21
**Link:** https://github.com/rust-lang/lang-team/issues/21
### "const-evaluation" lang-team#22
**Link:** https://github.com/rust-lang/lang-team/issues/22
### "const-generics" lang-team#51
**Link:** https://github.com/rust-lang/lang-team/issues/51
### "Deref patterns" lang-team#88
**Link:** https://github.com/rust-lang/lang-team/issues/88
### "Generators (iterator functions), sync and async" lang-team#137
**Link:** https://github.com/rust-lang/lang-team/issues/137
### "Initiative: trusted external static declarations" lang-team#149
**Link:** https://github.com/rust-lang/lang-team/issues/149
## Pending proposals on the lang-team repo
None.
## Pending PRs on the lang-team repo
### "project-safe-transmute" lang-team#21
**Link:** https://github.com/rust-lang/lang-team/issues/21
### "const-evaluation" lang-team#22
**Link:** https://github.com/rust-lang/lang-team/issues/22
### "clarify lint policy " lang-team#48
**Link:** https://github.com/rust-lang/lang-team/issues/48
### "const-generics" lang-team#51
**Link:** https://github.com/rust-lang/lang-team/issues/51
### "Make a place for a "lang team wishlist"" lang-team#54
**Link:** https://github.com/rust-lang/lang-team/issues/54
### "Link in design meeting template is dead" lang-team#80
**Link:** https://github.com/rust-lang/lang-team/issues/80
### "Eventual Concern: Send/Sync insufficient in the presence of multiple execution contexts." lang-team#87
**Link:** https://github.com/rust-lang/lang-team/issues/87
### "Deref patterns" lang-team#88
**Link:** https://github.com/rust-lang/lang-team/issues/88
### "Specification of safe rust ?" lang-team#123
**Link:** https://github.com/rust-lang/lang-team/issues/123
### "Generators (iterator functions), sync and async" lang-team#137
**Link:** https://github.com/rust-lang/lang-team/issues/137
### "Initiative: trusted external static declarations" lang-team#149
**Link:** https://github.com/rust-lang/lang-team/issues/149
### "agenda generation should include section with S-waiting-on-team + T-lang" lang-team#172
**Link:** https://github.com/rust-lang/lang-team/issues/172
### "dead Zulip/zulip-archive links" lang-team#185
**Link:** https://github.com/rust-lang/lang-team/issues/185
### "HTTP Error 404 in the Chat Platform p link" lang-team#186
**Link:** https://github.com/rust-lang/lang-team/issues/186
### "discuss/resolve `fn { mod { (use) super::...; } }` and its interaction with derive patterns" lang-team#193
**Link:** https://github.com/rust-lang/lang-team/issues/193
### "lang agenda generator ignores lang-nominated closed issues" lang-team#199
**Link:** https://github.com/rust-lang/lang-team/issues/199
### "mdbook build and deploy is failing" lang-team#221
**Link:** https://github.com/rust-lang/lang-team/issues/221
### "We need to settle the behaviour of floating-point in `const`" lang-team#222
**Link:** https://github.com/rust-lang/lang-team/issues/222
### "Design meeting: Rust issues encountered by new Rust users in the Bevy project" lang-team#229
**Link:** https://github.com/rust-lang/lang-team/issues/229
### "Nail down cargo-script syntax proposal" lang-team#232
**Link:** https://github.com/rust-lang/lang-team/issues/232
### "Add soqb`s design doc to variadics notes" lang-team#236
**Link:** https://github.com/rust-lang/lang-team/pull/236
### "Update auto traits design notes with recent discussion" lang-team#237
**Link:** https://github.com/rust-lang/lang-team/pull/237
### "Design meeting: Profiles" lang-team#245
**Link:** https://github.com/rust-lang/lang-team/issues/245
### "Proposal: Remove `i128`/`u128` from the `improper_ctypes` lint" lang-team#255
**Link:** https://github.com/rust-lang/lang-team/issues/255