--- date: 2025-01-07 url: https://hackmd.io/KOiQif2STWW9XfPaTePcYw --- # Libs-API Meeting 2025-01-07 ###### tags: `Libs Meetings` `Minutes` **Meeting Link**: https://meet.jit.si/rust-libs-meeting-crxoz2at8hiccp7b3ixf89qgxfymlbwr **Attendees**: Amanieu, David Tolnay, Mara, Chris Denton, The 8472, TC ## Agenda - Triage - Anything else? ## Triage ### FCPs 16 rust-lang/rust T-libs-api FCPs - merge rust.tf/80437 *Tracking Issue for \`box\_into\_inner\`* - (1 checkboxes left) - merge rust.tf/120287 *Tracking Issue for \`NonZero\*::count\_ones\`* - (3 checkboxes left) - merge rust.tf/106418 *Implement \`PartialOrd\` and \`Ord\` for \`Discriminant\`* - (2 checkboxes left) - merge rust.tf/134016 *Stabilize \`const\_is\_char\_boundary\` and \`const\_str\_split\_at\`.* - (3 checkboxes left) - merge rust.tf/120141 *Tracking Issue for enum access in offset\_of* - (6 checkboxes left) - merge rust.tf/134679 *Windows: remove readonly files* - (3 checkboxes left) - merge rust.tf/132268 *Impl TryFrom\<Vec\<u8\>\> for String* - (3 checkboxes left) - merge rust.tf/130192 *\[discussion\] \`ErrorKind::InvalidFilename\` from \`io\_error\_more\`* - (3 checkboxes left) - merge rust.tf/129375 *Tracking Issue for unbounded\_shifts* - (3 checkboxes left) - merge rust.tf/127534 *feat(core): impl Step for NonZero\<u\*\>* - (3 checkboxes left) - merge rust.tf/59618 *Tracking issue for HashMap::extract\_if and HashSet::extract\_if* - (3 checkboxes left) - merge rust.tf/130801 *Tracking Issue for \`const\_mut\_cursor\`* - (3 checkboxes left) - merge rust.tf/129041 *Tracking Issue for \`const\_vec\_string\_slice\`* - (3 checkboxes left) - merge rust.tf/97601 *Tracking Issue for map\_many\_mut* - (3 checkboxes left) - merge rust.tf/134340 *Stabilize \`num\_midpoint\_signed\` feature* - (3 checkboxes left) - merge rust.tf/103806 *Tracking Issue for \`string\_extend\_from\_within\`* - (3 checkboxes left) [joshtriplett (7)](https://rfcbot.rs/fcp/joshtriplett), [nikomatsakis (2)](https://rfcbot.rs/fcp/nikomatsakis), [m-ou-se (13)](https://rfcbot.rs/fcp/m-ou-se), [Amanieu (6)](https://rfcbot.rs/fcp/Amanieu), [scottmcm (2)](https://rfcbot.rs/fcp/scottmcm), [dtolnay (2)](https://rfcbot.rs/fcp/dtolnay), [BurntSushi (14)](https://rfcbot.rs/fcp/BurntSushi), [pnkfelix (1)](https://rfcbot.rs/fcp/pnkfelix), [tmandry (1)](https://rfcbot.rs/fcp/tmandry) ### Regressions - rust.tf/134710 -- acceptable breakage - rust.tf/134714 -- glob import, acceptable breakage - rust.tf/134707 -- glob import, acceptable breakage ### (nominated) rust.tf/libs316 *Add nearly in\-place case change methods to String* David: `fn make_uppercase(&mut self)`? Existing uppercase methods: - https://doc.rust-lang.org/std/string/struct.String.html#method.to_ascii_uppercase - https://doc.rust-lang.org/std/string/struct.String.html#method.make_ascii_uppercase - https://doc.rust-lang.org/std/string/struct.String.html#method.to_uppercase consensus: contineu as make_uppercase ### (nominated) rust.tf/54140 *Tracking Issue: Procedural Macro Diagnostics (RFC 1566)* (Waiting for JoshT to join the meeting.) JoshT: Looks like there is a stabilizable subset. Mara: Iirc, we concluded that we shouln't have unsupressable warnings. David brought that up. JoshT: But people already do something today that you cannot suppress. David: A deprecation warning is suppressable with allow(deprecated). JoshT: Would it suffice to have a group that you can allow(proc_macro_warning)? And then later allow more specific lints? David: Could be a start, but we need to take it into account in the API. E.g. a warn("asdf") function wouldn't allow for a lint name JoshT: Suppressing warnings by using the proc_macro name could suffice. David: The macros usually come from a different crate. E.g. tokio_macros, not tokio. So the crate name doesn't work as the lint namespace. The 8472: With attribute macros supressing all proc_macro warnings on a method will also supress those from the method body. TC: Similar namespacing problem in attributes on fields etc. Same for tools namespaces. TC: My feeling is this should be also tagged for lang. Any reason it shouldn't be? David: I'd like to see lang involved here also. It may be a matter of one or the other team driving it and then presenting it to both. TC: Let's tag it for both libs-api and lang then. ### (nominated) rust.tf/91399 *Tracking Issue for \`float\_next\_up\_down\`* As specified in the IEEE754 standard. [Docs](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.next_up) explain all the edge cases. Ready for FCP. ### (nominated) rust.tf/127154 *Tracking Issue for anonymous pipe API* In FCP now. ### (nominated) rust.tf/131923 *Derive \`Copy\` and \`Hash\` for \`IntErrorKind\`* Mara: Sure, looks fine. Amanieu: It is non_exhaustive. The 8472: Should be fine for Hash or Copy. Mara: It's in libcore, so it's not going to contain a Box or Vec or whatever. Proposed FCP. ### (nominated) rust.tf/133829 *AtomicT::fetch\_update\_infallible* Discussed last time. ### (nominated) rust.tf/134272 *make rustc\_encodable\_decodable feature properly unstable* Still 139 regressions. TC: In Rust 2024, we did https://github.com/rust-lang/rust/pull/116016 - Soft-destabilizing RustcEncodable and RustcDecodable. Amanieu: Can we fully remove the feature instead? Proposal: Remove the feature entirely, and patch `num 0.1` The 8472: [spectral](https://crates.io/crates/spectral) crate is still getting some downloads TC: Alternatively, send PRs to the crates that depend on num 0.1. At least those that seem active. `num` is maintained by Alex and Josh Stone. We can (help) release a num 0.1.1. ### (nominated) rust.tf/134283 *fix(libtest): Deprecate '\-\-logfile'* Mara: [https://github.com/search?type=code&q=%2Fcargo+%28test%7Cbench%29.*--logfile%2F](https://github.com/search?type=code&q=%2Fcargo+%28test%7Cbench%29.*--logfile%2F) https://github.com/rust-lang/testing-devex-team/issues/9#issuecomment-2460290443 The 8472: The FCP was to close "changing --logformat", not an FCP to accept deprecating it. TC: There were two FCPs Mara: The PR deprecates it only for json and junit? Mistake? Flipped boolean in is_programmatic? TC: The PR is a bit odd. Doesn't explain based on the current situation. Mara: Yeah feels like i'm missing context. Would love some clarifications. TC to post a comment. ### (nominated) rust.tf/134389 *Condvar: implement wait\_timeout for targets without threads* Mara: @bors r+ ### (nominated) rust.tf/135003 *deprecate \`std::intrinsics::transmute\` etc, use \`std::mem::\*\` instead* Mara: Let's make sure it doesn't say "transmute is deprecated", that'd be confusing. It should say that using that specific path is deprecated. Also in rustdoc. {Discussion on the other methods} Amanieu: Question for this meeting is if we're okay deprecating these Amanieu: Don't think this needs an FCP. Bugfix. Mara: Sure. Enough libs-api people in this meeting. ### (waiting on team) rust.tf/134679 *Windows: remove readonly files* Proposed FCP ### (new change proposal) rust.tf/libs519 *ACP: Move \`ToOwned\` and \`Cow\` to \`core\`.* No objection in principle but implementation issues. Josh to comment. ### (new change proposal) rust.tf/libs518 *Add expose\_provenance and from\_exposed\_provenance on NonNull* Ship it, modulo the fix that kennytm mentioned. ### (new change proposal) rust.tf/libs517 *ACP: Allow comparisons between \`CString\` and \`CStr\`.* Josh commented: approved but needs crater run. ### (new change proposal) rust.tf/libs516 *Allow querying current buffer fullness of channels* We already had `len` on the mpmc types; let's ship it on the mpsc ones also. ### (new change proposal) rust.tf/libs515 *Add \`Path::with\_replaced\_extension\` as a alias of \`Path::with\_extension\` and deprecate \`Path::with\_extension\` for cleaner function name* Closing as not planned. Though we're sympathetic, it's too much churn for too little benefit, and there are probably other things we should try here first, like documentation improvements. We'll also start an FCP on stabilizing `add_extension` and `with_added_extension`, as it's separately time that we do that. ### (new change proposal) rust.tf/libs514 *Add \`Rwlock\` \`try\_upgrade\` method* Let's do it. Accepted. ### (new change proposal) rust.tf/libs513 *Implement IntoIterator for tuples with values which are IntoIterator themselves* In discussion, there was a lot of sympathy for this. The cost of all the explicit things does add up, and what's proposed here produces a very aesthetic language outcome. At the same time, there were concerns about not being explicit. We decided to summarize our thinking on the issue and to table the matter for further discussion later. We wanted to sleep on it. Josh to summarize. ### (new change proposal) rust.tf/libs512 *add a new \`File::append\` constructor* ### (new change proposal) rust.tf/libs511 *Rename \`end\` field of inclusive \`Range\` APIs to \`last\`* We were inclined to accept this on the theory that if we're going to do a migration here, we might as well fix as much as possible. But we wanted to check with Peter first, though, to confirm we're not missing anything. ### (new change proposal) rust.tf/libs510 *Export cold\_path() in std::hint* ### (stalled change proposal) rust.tf/libs287 *ACP: Add \`FromByteStr\` trait with blanket impl \`FromStr\`* ### (stalled change proposal) rust.tf/libs201 *ACP: Provide \`TryFrom\<&\[T\]\>\` implementation for \`&\[\[T; N\]\]\`* ### (stalled change proposal) rust.tf/libs124 *Integrate \`Error\` trait with panic interfaces* ### (stalled change proposal) rust.tf/libs253 *Provide way to deconstruct std::iter::Rev* ### (stalled change proposal) rust.tf/libs344 *ACP: Add \`std::string::String::replace\_and\_count\` and/or \`replace\_with\`* ### (stalled change proposal) rust.tf/libs298 *Constructive/Destructive Interference Size Padding* ### (stalled change proposal) rust.tf/libs131 *Add \`std::fs::rename\_noreplace\`* ### (stalled change proposal) rust.tf/libs357 *ACP: \`std::collections::{hash\_map, btree\_map}::Entry::{is\_vacant, is\_occupied}\`* ### (stalled change proposal) rust.tf/libs336 *Add \`or\_try\_\*\` variants for HashMap and BTreeMap Entry APIs* ### (stalled change proposal) rust.tf/libs331 *Support permanently skipping tests on a specific system* _Generated by [fully-automatic-rust-libs-team-triage-meeting-agenda-generator](https://github.com/rust-lang/libs-team/tree/main/tools/agenda-generator)_