# Libs-API Meeting 2025-04-15 ###### tags: `Libs Meetings` `Minutes` **Meeting Link**: https://meet.jit.si/rust-libs-meeting-crxoz2at8hiccp7b3ixf89qgxfymlbwr **Attendees**: Amanieu, Mara, David, JoshT, The 8472, Chris Denton ## Agenda - Triage - Anything else? ## Triage ### FCPs 11 rust-lang/rust T-libs-api FCPs - merge rust.tf/80437 *Tracking Issue for \`box\_into\_inner\`* - (1 checkboxes left) - merge rust.tf/138498 *Implement Deref\<Target=ByteStr\> for CStr* - (3 checkboxes left) - merge rust.tf/106418 *Implement \`PartialOrd\` and \`Ord\` for \`Discriminant\`* - (2 checkboxes left) - merge rust.tf/130823 *Tracking Issue for \`non\_null\_from\_ref\`* - (3 checkboxes left) - merge rust.tf/137280 *stabilize ptr::swap\_nonoverlapping in const* - (3 checkboxes left) - merge rust.tf/122661 *Change the desugaring of \`assert!\` for better error output* - (3 checkboxes left) - merge rust.tf/137992 *Stabilise \`os\_string\_pathbuf\_leak\`* - (4 checkboxes left) - merge rust.tf/115585 *Tracking issue for \`cfg\_match\`* - (2 checkboxes left) - merge rust.tf/138016 *Added \`Clone\` implementation for \`ChunkBy\`* - (3 checkboxes left) - merge rust.tf/111137 *Tracking Issue for AVX512 intrinsics* - (3 checkboxes left) - merge rust.tf/139624 *Don't allow flattened format\_args in const.* - (5 checkboxes left) [dtolnay (1)](https://rfcbot.rs/fcp/dtolnay), [BurntSushi (7)](https://rfcbot.rs/fcp/BurntSushi), [m-ou-se (5)](https://rfcbot.rs/fcp/m-ou-se), [nikomatsakis (3)](https://rfcbot.rs/fcp/nikomatsakis), [joshtriplett (6)](https://rfcbot.rs/fcp/joshtriplett), [Amanieu (6)](https://rfcbot.rs/fcp/Amanieu), [tmandry (2)](https://rfcbot.rs/fcp/tmandry), [scottmcm (2)](https://rfcbot.rs/fcp/scottmcm) ### (nominated) rust.tf/libs337 *Add \`((un)checked\_)exact\_div\` methods for integer types* ```rust pub const fn checked_exact_div(self, rhs: Self) -> Option<Self>; pub const fn exact_div(self, rhs: Self) -> Self; pub unsafe const fn unchecked_exact_div(self, rhs: Self) -> Self; ``` Amanieu: excited about unchecked_exact_div Mara: all three seem useful to me. Seems fine to accept this. David: what optimizations does the unchecked one enable? Amanieu: https://github.com/rust-lang/libs-team/issues/337#issuecomment-2799431533 David: So, divide by two and then indexing an [u16]? Amanieu: yup David: +1 seems great Amanieu: not sure about exact_div, which panics. questionable. Mara: leave that one as an open question? Amanieu: or have exact_div return an Option, remove checked_exact_div. Amanieu: we can defer that till later. Accepted ### (nominated) rust.tf/libs547 *Change ACP process to track unimplemented ACPs* Discussed in last meeting, Amanieu to reply. ### (nominated) rust.tf/130703 *Tracking Issue for secure random data generation in \`std\`* Still nominated from last week. Amanieu: Anything new to discuss? JoshT: needs more design discussion Mara: drop nomination, renominate when there's a concrete proposal? JoshT: probably best dropped label. ### (nominated) rust.tf/137198 *Rename \`cfg\_match!\` to \`cfg\_select!\`* Discussed in last meeting, Amanieu to reply. ### (nominated) rust.tf/137654 *Debug impls of ExtractIf have inconsistent trait bounds* - Hashbrown PR: https://github.com/rust-lang/hashbrown/pull/616 - Standard library PR: https://github.com/rust-lang/rust/pull/139764 (requires hashbrown release + update) - Beta revert: https://github.com/rust-lang/rust/pull/139765 Amanieu: Still need to look at it. David: we can also revert. no rush. ### (nominated) rust.tf/139224 *fix(test): Expose '\-\-no\-capture' in favor of \`\-\-nocapture\`* Mara: Seems like a good improvement. Doesn't result in any warnings for the deprecated one. But needs FCP. JoshT: +1, this follows common conventions for multi-word command-line options. Amanieu: delegate all authority to t-testing-devex? Mara: not sure. did we always vote the same as their FCP? David: how many FCPs? not many? let's keep it. Amanieu: previous example: deprecate --logfile David: we're not stalling them. FCP went through quickly. Amanieu started FCP ### (nominated) rust.tf/139624 *Don't allow flattened format\_args in const.* FCP ongoing. ### (nominated) rust.tf/139865 *Stabilize proc\_macro::Span::{start,end,line,column,file,local\_file}.* David: I think this is ready for FCP Amanieu: `local_file` as name? Mara: `file_as_it_exists_on_the_local_file_system` was a bit long. `local_file` is the name in rustc. Amanieu: why an `Option`? Mara: Could come from command line args, for example. Or macro expansion. Amanieu: Split off file+local_file to a separate stabilization PR? Might be a bit early for those. Amanieu: not convinced about the name `local_file` David: We should expose `byte_offset` if we expose a way to get the local_file. David: Might be relevant to get a comment before the field, etc. Conclusion: don't stabilize file+local_file for now. Do that separate together with byte_offset (and byte_length)? https://github.com/rust-lang/rust/pull/139865 ### (waiting on team) rust.tf/136687 *Improve the documentation of \`Display\` and \`FromStr\`, and their interactions* Amanieu and Josh to bring a proposal back to the team. ### (waiting on team) rust.tf/137487 *Stabilize \`assert\_matches\` and move it to \`core::macros\`* ### (waiting on team) rust.tf/139535 *Implement \`Default\` for raw pointers* ### (new change proposal) rust.tf/libs572 *Add \`Cell::get\` for \`Rc\`\-like shallow\-copying types* For Option-in-Cell, you can already easily do .take(). For `Cell<Rc>`, you can't do that. We can implement Clone, or allow .get(), or both, for Cell-of-Rc. Specific for Rc? Or with some unsafe marker trait? Amanieu: Inclined to reject. Seems complicated, all this trait business. (Trait for Cell::get) Amanieu: `Cell` is in `core`, `Rc` is in `alloc`. David: CellGet trait seems fine to me. "no funny business" trait for Clone. Mara: Trait would be similar to the 'cheap to clone' trait? JoshT: Might also implement the "no funny business" trait for String, even though it's not cheap to clone. But do we want to do that if we're supporting `.get()` rather than `.clone()`? Mara: That allocates, so calls user code in the allocator, which might touch the cell. JoshT: Implementing the allocator is unsafe. Amanieu: This is not part of the allocator safety contract. Sealed/private trait? We could start with sealed. can always expose it later. Amanieu: Motivation only mentions Option and Weak, which both implement Default. Mara: Then we can just require `T: Default` on a new method. The 8472: We should ask if that suffices. Last comment was 3 hours ago. Discussion ongoing. Amanieu to post a reply. ### (new change proposal) rust.tf/libs570 *actually checked bitshifts* Discussed in last meeting, Amanieu to reply. ### (new change proposal) rust.tf/libs569 *ACP: abstract \`BufReader::peek\`* Amanieu: David had a counterproposal? David, do you remember? David: That was for a different ACP. http://rust.tf/libs557 ### (new change proposal) rust.tf/libs568 *Implement \`Read\` and \`Write\` traits for \`BorrowedFd\` and \`OwnedFd\`* We don't have a consensus to implement `Read` and `Write` on `OwnedFd` or `BorrowedFd`; Josh and 8472 disagree about this. We have consensus to implement a trait that converts `BorrowedFd<'a>` to `&'a File` or similar. We should also provide an inherent method on `BorrowedFd` that supports turbofishing the return type. The 8472 to reply. ### (new change proposal) rust.tf/libs562 *Add ability to customize STARTUPINFO structure in Command API* ### (new change proposal) rust.tf/libs557 *Add \`iter::Peekable::next\_unpeek\`* Approving `peek_slot` counterproposal ### (new change proposal) rust.tf/libs555 *Add \`std::io::Seek\` instance for \`std::io::Take\<T\>\` when \`T: Seek\`* Approved. Josh noticed that `get_ref` allows I/O on many kinds of underlying readers (such as `File`). Documentation PR to address that: https://github.com/rust-lang/rust/pull/139877 ### (new change proposal) rust.tf/libs553 *Add a "shrink\-if\-excessive" API to \`Vec\`* ``` Vec::calc_capacity_growth(&self, reserve: usize) -> usize ``` The 8472 to ask whether convenience or exposing growth strategy will work for them. ### (new change proposal) rust.tf/libs552 *Provider\-style API for \`Context\`* Nominated for wg-async ### (stalled change proposal) rust.tf/libs364 *ACP: Add {Box, Rc, Arc}::map and {Box, Rc, Arc}::try\_map* We'd like to see this added to Box, UniqueRc, UniqueArc, instead. And possibly a `map_ref` function taking `Fn(&T) -> U` for the opportunistic optimization. ### (stalled change proposal) rust.tf/libs181 *\`Cow::map\_borrowed\`, \`Cow::map\_owned\`, and \`Cow::map\`* ### (stalled change proposal) rust.tf/libs366 *Implementing UnixSocketExt traits for solaris/illumos ; starting with the unix\_socket\_exclbind feature* ### (stalled change proposal) rust.tf/libs372 *ACP: env::home\_dir replacement* ### (stalled change proposal) rust.tf/libs155 *Arbitrary alternate flags in \`std::fmt::Formatter\`* Agree with Mara's rejection of this; closing ### (stalled change proposal) rust.tf/libs325 *Add macro \`static\_assert\` to perform compile\-time assertion checking* ### (stalled change proposal) rust.tf/libs350 *std::slice::from\_raw\_parts alternative that would accept a null pointer if len == 0 by returning an empty slice* The 8472 to reply. ### (stalled change proposal) rust.tf/libs207 *\`parse\_line\` method for \`Stdin\`* ### (stalled change proposal) rust.tf/libs296 *ACP: Designing an alternative \`FromStr\`* ### (stalled change proposal) rust.tf/libs194 *Fix:Introduce an interface to expose the current \`Command\` captured env var logic* _Generated by [fully-automatic-rust-libs-team-triage-meeting-agenda-generator](https://github.com/rust-lang/libs-team/tree/main/tools/agenda-generator)_