Libs-API Meeting 2025-07-15
Meeting Link: https://meet.jit.si/rust-libs-meeting-crxoz2at8hiccp7b3ixf89qgxfymlbwr
Attendees: Amanieu, David, The 8472, TC, Chris Denton, Martin
Agenda
Triage
FCPs
1 rust-lang/rfcs T-libs-api FCPs
- merge rust.tf/rfc3809 RFC: enable `derive(From)` for single-field structs - (2 checkboxes left)
17 rust-lang/rust T-libs-api FCPs
- merge rust.tf/80437 Tracking Issue for `box_into_inner` - (1 checkboxes left)
- merge rust.tf/140808 Implement Default for &Option - (3 checkboxes left)
- merge rust.tf/133289 Tracking Issue for `const_array_each_ref` - (4 checkboxes left)
- merge rust.tf/143191 Stabilize `rwlock_downgrade` library feature - (3 checkboxes left)
- merge rust.tf/143289 Remove `[T]::array_chunks(_mut)` - (3 checkboxes left)
- merge rust.tf/106418 Implement `PartialOrd` and `Ord` for `Discriminant` - (2 checkboxes left)
- merge rust.tf/65816 Tracking issue for `vec_into_raw_parts` - (3 checkboxes left)
- merge rust.tf/132968 Tracking Issue for `NonZero<u*>::div_ceil` - (4 checkboxes left)
- merge rust.tf/139087 Fallback `{float}` to `f32` when `f32: From<{float}>` and add `impl From<f16> for f32` - (5 checkboxes left)
- merge rust.tf/129333 Tracking Issue for `lazy_get` - (3 checkboxes left)
- merge rust.tf/127213 Tracking Issue for AVX512_FP16 intrinsics - (3 checkboxes left)
- merge rust.tf/136306 Tracking Issue for NEON fp16 intrinsics - (3 checkboxes left)
- merge rust.tf/141520 Tracking Issue for const {OsString, PathBuf}::new - (3 checkboxes left)
- merge rust.tf/70530 Tracking Issue for {BTreeMap,BTreeSet}::extract_if - (3 checkboxes left)
- merge rust.tf/141994 add Iterator::contains - (4 checkboxes left)
- merge rust.tf/141744 Stabilize `ip_from` - (3 checkboxes left)
- merge rust.tf/140956 `impl PartialEq<{str,String}> for {Path,PathBuf}` - (3 checkboxes left)
dtolnay (2), tmandry (1), BurntSushi (15), m-ou-se (15), Amanieu (3), joshtriplett (14), nikomatsakis (3), scottmcm (1), jackh726 (1)
(nominated) rust.tf/libs363 Un-specialize impl ToString
(nominated) rust.tf/libs615 Remove overriding impls of deprecated `Error::description`.
In favor
Widely used libraries for example serde_json::Error
have removed it a long time ago
This simplifies our other discussion about deprecating description
separately for deprecated-to-call vs deprecated-to-implement. We should be fine to simultaneously deprecate both
(nominated) rust.tf/143471 Is mutex poisoning guaranteed to always work properly?
Options:
- declare poisoning as not guaranteed
- replace panicking flag with a counter + fix foreign exceptions
See also:
Amanieu worked out how this could maybe be made reliable and will post a reply with details.
TC: Looking at this diff, as proposed, this would have the same problem as with array_chunks
, in that due to the assertion in the const block, one could not write a checked wrapper for the applicable const generic without const if
.
Counterproposal:
(nominated) rust.tf/143717 Add `Default` impls for `Pin`ned `Box`, `Rc`, `Arc`
Looks good. FCP proposed.
(nominated) rust.tf/143829 Trim `BorrowedCursor` API
Seems OK. The8472 to reply.
(nominated) rust.tf/143832 Regression: intrinsics::drop_in_place removed
Seems still OK to go forward.
(waiting on team) rust.tf/139087 Fallback `{float}` to `f32` when `f32: From<{float}>` and add `impl From<f16> for f32`
Not waiting on us necessarily.
(waiting on team) rust.tf/143859 Guarantee 8 bytes of alignment in Thread::into_raw
Proposed FCP
(new change proposal) rust.tf/libs621 ACP: Add Waker::with_arc_wake
Nominated for wg-async.
We'll let this soak for another week for the discussion to continue.
(new change proposal) rust.tf/libs619 slice::get_clamped
We're asking for a more fleshed-out motivation.
(new change proposal) rust.tf/libs618 ACP: Implement fmt::Binary for [u8] and friends
We actually want this to work with Debug
, e.g. println!("{x:b?}")
. That requires updating the format string parsing. That's OK; we'll do that.
(new change proposal) rust.tf/libs617 Add `LocalKey<Cell>::update`
ACP accepted.
(new change proposal) rust.tf/libs616 API Proposal: Slice iterator helpers for taking chunks of data
We'll ask for benchmarks.
Also, scottmcm had mentioned that https://github.com/rust-lang/rust/pull/122971 could solve this in a different way. It seems maybe this could land now that an LLVM issue has been fixed. The8472 is the reviewer and will have a look.
(new change proposal) rust.tf/libs603 A `Static` receiver type for dyn-trait methods that do not take values
(new change proposal) rust.tf/libs587 ACP: `try_exact_div` method on `NonZero<{integer}>`
(new change proposal) rust.tf/libs578 ACP: hash_map! macro to create `HashMap`s such as `vec!`
We're going to accept this on nightly with =>
and leave an open question about the syntax.
This has lang overlap, as we may want to take a more lang-oriented approach to this. E.g., David suggests HashMap::from([ a => b ])
. David proposes that we're underusing =>
in the language, and that perhaps we should lean into =>
for key/value pairs. In that model, =>
makes sense as the more preferred alternative in any case. a => b
can desugar to (a, b)
(only inside of [
]
?) or to some other struct, the way infix ..
desugars to Range
.
There are also open questions on the lang side about whether we want to continue using :
for struct initialization forever.
(new change proposal) rust.tf/libs575 ACP: Add Entry-like API for Option
We decided we needed to sleep on this one.
(stalled change proposal) rust.tf/libs296 ACP: Designing an alternative `FromStr`
(stalled change proposal) rust.tf/libs295 Create iterator function in std libs: split_item_mut()
(stalled change proposal) rust.tf/libs360 make FromResidual #[fundamental]
(stalled change proposal) rust.tf/libs304 ACP: Avoid the common mistake of `for x in 0u8..`
(stalled change proposal) rust.tf/libs262 Add infallible variant of RangeFrom::next()
(stalled change proposal) rust.tf/libs456 Add Option::todo and Result::todo
(stalled change proposal) rust.tf/libs347 Context reactor hook
(stalled change proposal) rust.tf/libs336 Add `or_try_*` variants for HashMap and BTreeMap Entry APIs
(stalled change proposal) rust.tf/libs348 std::os::unix::env::{argc, argv}
Generated by fully-automatic-rust-libs-team-triage-meeting-agenda-generator