# Libs-API Meeting 2026-01-13 ###### tags: `Libs Meetings` `Minutes` **Meeting Link**: https://meet.jit.si/rust-libs-meeting-crxoz2at8hiccp7b3ixf89qgxfymlbwr **Attendees**: Josh Triplett, The 8472, David Tolnay, Tomas Sedovic (for ~30 minutes out of both meetings) ## Agenda - Triage - Anything else? ## Triage ### FCPs 1 rust-lang/rfcs T-libs-api FCPs - merge rust.tf/rfc3874 *build\-std: always* - (22 checkboxes left) 15 rust-lang/rust T-libs-api FCPs - merge rust.tf/80437 *Tracking Issue for \`box\_into\_inner\`* - (1 checkboxes left) - merge rust.tf/149218 *Make PinCoerceUnsized require Deref* - (7 checkboxes left) - merge rust.tf/106418 *Implement \`PartialOrd\` and \`Ord\` for \`Discriminant\`* - (2 checkboxes left) - merge rust.tf/149978 *deprecate \`Eq::assert\_receiver\_is\_total\_eq\` and emit FCW on manual impls* - (5 checkboxes left) - merge rust.tf/116258 *Tracking Issue for explicit\-endian String::from\_utf16* - (1 checkboxes left) - merge rust.tf/139087 *Fallback \`{float}\` to \`f32\` when \`f32: From\<{float}\>\` and add \`impl From\<f16\> for f32\`* - (4 checkboxes left) - close rust.tf/136638 *warn on empty precision* - (3 checkboxes left) - merge rust.tf/98407 *Tracking Issue for \`Exclusive\`* - (1 checkboxes left) - merge rust.tf/140808 *Implement Default for &Option* - (1 checkboxes left) - merge rust.tf/141994 *add Iterator::contains* - (1 checkboxes left) - merge rust.tf/76314 *Tracking Issue for atomic\_from\_mut* - (1 checkboxes left) - merge rust.tf/125687 *Tracking Issue for \`new\_range\_api\` (part of RFC 3550)* - (3 checkboxes left) - merge rust.tf/149482 *thread::scope: document how join interacts with TLS destructors* - (3 checkboxes left) - merge rust.tf/122034 *Tracking Issue for raw\-pointer\-to\-reference conversion methods* - (3 checkboxes left) - merge rust.tf/150300 *Constify \`fmt::from\_fn\`* - (3 checkboxes left) [davidtwco (1)](https://rfcbot.rs/fcp/davidtwco), [the8472 (9)](https://rfcbot.rs/fcp/the8472), [Muscraft (1)](https://rfcbot.rs/fcp/Muscraft), [Mark-Simulacrum (1)](https://rfcbot.rs/fcp/Mark-Simulacrum), [matthewjasper (1)](https://rfcbot.rs/fcp/matthewjasper), [petrochenkov (1)](https://rfcbot.rs/fcp/petrochenkov), [Amanieu (7)](https://rfcbot.rs/fcp/Amanieu), [cjgillot (1)](https://rfcbot.rs/fcp/cjgillot), [oli-obk (1)](https://rfcbot.rs/fcp/oli-obk), [arlosi (1)](https://rfcbot.rs/fcp/arlosi), [epage (1)](https://rfcbot.rs/fcp/epage), [jieyouxu (1)](https://rfcbot.rs/fcp/jieyouxu), [spastorino (1)](https://rfcbot.rs/fcp/spastorino), [Eh2406 (1)](https://rfcbot.rs/fcp/Eh2406), [nikomatsakis (4)](https://rfcbot.rs/fcp/nikomatsakis), [tmandry (2)](https://rfcbot.rs/fcp/tmandry), [scottmcm (3)](https://rfcbot.rs/fcp/scottmcm), [joshtriplett (7)](https://rfcbot.rs/fcp/joshtriplett), [dtolnay (3)](https://rfcbot.rs/fcp/dtolnay), [wesleywiser (1)](https://rfcbot.rs/fcp/wesleywiser), [weihanglo (1)](https://rfcbot.rs/fcp/weihanglo), [0xPoe (1)](https://rfcbot.rs/fcp/0xPoe), [jackh726 (1)](https://rfcbot.rs/fcp/jackh726), [SparrowLii (1)](https://rfcbot.rs/fcp/SparrowLii), [BurntSushi (8)](https://rfcbot.rs/fcp/BurntSushi), [estebank (1)](https://rfcbot.rs/fcp/estebank) ### (nominated) rust.tf/98407 *Tracking Issue for \`Exclusive\`* David: This was nominated for our previous meeting but it was not unnominated. I don't think we need to talk about it here. The 8472: Burntsushi replied so what's open there is just renaming it. Josh: There was a mention of what's open there is just renaming. There was a discussion on the naming on the issue too? The 8472: What's on the table? Josh: `MakeSync`, `SyncView`, `SyncWrapper`, `AlwaysSync` The 8472: `SyncView` Josh: Okay, it looks like `SyncView` it is, The 8472 can you please provide rationale? ### (nominated) rust.tf/136703 *dbg! prints can tear in multi\-threading code* The 8472: I don't think that needs the API discussion. David: It's up to us to specify what's the intended behavior The 8472: It shouldn't make much of a difference Josh: It doesn't seem unreasonable to take the stderr lock for the duration of the debug print. I don't think we need to precompute all th values, just take the stderr lock and then do all the work. The 8472: precomputing might be faster but I don't think anyone's going to be using this for performance critical code David: Is there an issue with nested debug locks? The 8472: I'm not seeing a mention of re-entrance in the docs. If you have something calling `dbg!` inside `dbg!` that'd be funny David: Turning it into a deadlock would make it less funny. I've tried a simple program and it didn't deadlock. So I think it's pre-entrant on my platform. ``` fn main() { let stdout = std::io::stdout(); let _a = stdout.lock(); let _b = stdout.lock(); } ``` The 8472: Yes, it does use a reentrant lock on all platforms. David: Suggestion: don't precompute the values, take the stderr lock when computing values Josh + The 8472: Agreed. Josh: We should ask for a PR doing this. David: Suppose you have `dbg!(dbg!(1))` what is that going to do? The 8472: If you're doing some nested `dbg!` inside a `Debug` impl Josh: If you write that, you'll get a behaviour that's comparable to how weird that is The 8472: To some extent, tearing is useful because if you get out of the first part of debug printing and later it panics, you get at least some of the message out to the system David: I just tried `dbg!(dbg!(1))` and it prints ``` [src/main.rs:2:10] 1 = 1 [src/main.rs:2:5] dbg!(1) = 1 ``` Josh: Is that because it captures each value to a local before printing it? Seems it's calling and evaluating the inner argument. David: Is this something we want to preserve? Have a test for? Josh: It's something that we probably don't want to gratiutously break. You could take the lock at the top, then take a cache of a single value, The 8472: Why would taking the lock cause more interleaving? Josh: It wouldn't. It's if we The 8472: That's not what's being proposed previously. What I meant earlier was using `dbg!` inside a `impl Debug` implementation. And there you get interleaving. Josh: Sure, and that seems entirely expected if you do that. The 8472: I think this is a debugging facility, the docs say stability of the output etc. should not be relied on. That gives us the implementation flexibility and we don't need to update the API. David: Okay, I can follow-up with a response. ### (nominated) rust.tf/147555 *Tracking Issue for AArch64 FEAT\_JSCVT* Josh: Did this intrinsic get lang approval? The 8472: I'm adding the `c-tracking-issue` and `T-lang` labels. Josh: I'll nominate this for lang as well and I'll drop libs-api nominated and I propose we start an FCP here The 8472: So this doesn't change any global state, it just converts a value? Josh: That's my understanding ### (nominated) rust.tf/rfc3892 *Complex numbers* Josh: Looks like all the changes we asked fore were made in commits. I believe the current state of this is to be FCPd. I was going to skim the last couple of commits and start and FCP. ### (new change proposal) rust.tf/libs722 *ACP: Add constants \`f32::BITS\` and \`f64::BITS\`* David: my use case: https://github.com/dtolnay/zmij/blob/1.0.14/src/lib.rs#L144 Josh to reply ### (new change proposal) rust.tf/libs721 *NonMaxU\* and NonMinI\* niche counterparts* Josh replied ### (new change proposal) rust.tf/libs720 *Function to get multiple indices out of iterator in const\-size array* The 8472 to reply ### (new change proposal) rust.tf/libs718 *ACP: Add saturating artihmetic for \`SystemTime\`* ### (new change proposal) rust.tf/libs717 *Add \`\[\_\]::shift\_{left,right}\`* ### (new change proposal) rust.tf/libs713 *ACP: Add float constants for min/max limits of consecutive integers that convert to unique floats* ### (new change proposal) rust.tf/libs712 *Add an \`fN::mul\_add\` variant that might round twice* ### (new change proposal) rust.tf/libs711 *Add \`mem::needs\_clone\`* ### (new change proposal) rust.tf/libs710 *\`BinaryHeap::from\_raw\_vec\`* ### (new change proposal) rust.tf/libs709 *Add \`str::copy\_from\_str\` and other mutating \`str\` methods* ### (stalled change proposal) rust.tf/libs191 *Add LocalWaker support* ### (stalled change proposal) rust.tf/libs314 *Add security\_attributes() to windows::OpenOptionsExt* ### (stalled change proposal) rust.tf/libs371 *ACP: primitive numeric traits* ### (stalled change proposal) rust.tf/libs501 *ACP: Add floating point representation conversions* ### (stalled change proposal) rust.tf/libs523 *Add a deterministic constructor for \`RandomState\`* ### (stalled change proposal) rust.tf/libs111 *Restructure ptr\_metadata to minimal support* ### (stalled change proposal) rust.tf/libs462 *impl fmt::Write for BufWriter* ### (stalled change proposal) rust.tf/libs246 *ACP: replace use of \`Pointee\` trait with a \`ptr::Metadata\` type* ### (stalled change proposal) rust.tf/libs287 *ACP: Add \`FromByteStr\` trait with blanket impl \`FromStr\`* ### (stalled change proposal) rust.tf/libs544 *\`Arc\<impl !Sized\>\` constructors* _Generated by [fully-automatic-rust-libs-team-triage-meeting-agenda-generator](https://github.com/rust-lang/libs-team/tree/main/tools/agenda-generator)_