---
date: 2024-12-17
url: https://hackmd.io/4TGAhnHoQ9ulEU_z8oithA
---
# Libs-API Meeting 2024-12-17
###### tags: `Libs Meetings` `Minutes`
**Meeting Link**: https://meet.jit.si/rust-libs-meeting-crxoz2at8hiccp7b3ixf89qgxfymlbwr
**Attendees**: Amanieu, David, Josh Triplett, Mara, The 8472, Chris Denton, Ed Page, TC
## Agenda
- Triage
- Anything else?
## Triage
### FCPs
15 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/120141 *Tracking Issue for enum access in offset\_of* - (6 checkboxes left)
- merge rust.tf/132268 *Impl TryFrom\<Vec\<u8\>\> for String* - (4 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/127154 *Tracking Issue for anonymous pipe API* - (4 checkboxes left)
- merge rust.tf/103806 *Tracking Issue for \`string\_extend\_from\_within\`* - (4 checkboxes left)
[pnkfelix (1)](https://rfcbot.rs/fcp/pnkfelix), [Amanieu (6)](https://rfcbot.rs/fcp/Amanieu), [scottmcm (2)](https://rfcbot.rs/fcp/scottmcm), [tmandry (1)](https://rfcbot.rs/fcp/tmandry), [nikomatsakis (2)](https://rfcbot.rs/fcp/nikomatsakis), [joshtriplett (8)](https://rfcbot.rs/fcp/joshtriplett), [m-ou-se (12)](https://rfcbot.rs/fcp/m-ou-se), [dtolnay (3)](https://rfcbot.rs/fcp/dtolnay), [BurntSushi (13)](https://rfcbot.rs/fcp/BurntSushi)
### (nominated) rust.tf/libs478 *\`file\_absolute!\` macro*
Ed and David in agreement. (https://github.com/rust-lang/libs-team/issues/478#issuecomment-2515530112)
8472: is this the first instance that "current working directory of rustc" enters into rust's API?
David: it is already in the API when a proc macro wants to open a file, such as an `include_dir!` macro
Consensus from meeting: specify `file!` macro behavior (with lang involvement), remove `file_absolute!`, suggest Cargo to supply an environment variable indicating its choice of rustc current dir
### (nominated) rust.tf/libs311 *ACP: Pattern methods for \`OsStr\` without \`OsStr\` patterns*
Ed: Can't split on arbitrary BytePattern, because you can't split a (windows) OsStr everywhere.
Ed: We can use Pattern, i.e. only split on utf-8.
Amanieu: Instead of re-using Pattern, can we use `AsRef<OsStr>` as pattern?
JoshT: Downside is that it doesn't allow you to use anything that matches more than one thing. E.g. `['/', '\\']`.
Amanieu: We'd need to decode an OsStr into chars.
Josh/Mara: Not for searching a char, but you'd need it for a predicate taking a char.
Ed: Could always do `false` for a non-utf8 match
Mara: Sometimes you want non-utf8 to always be true.
Mara: We could pass the unicode replacement character for non-utf8. Then closures like `c == '/'` and `c != '/'` would all work as expected.
JoshT: Fascinating.
JoshT: We could have an OsStrPattern that supports everything except predicates over char.
Ed: For the unicode replacement char, are there rules for how many bytes to replace?
Mara: Yes. See https://doc.rust-lang.org/stable/std/str/struct.Utf8Error.html#method.error_len
Mara: Let's just accept the ACP and discuss more after there is an impl?
JoshT: Let's accept it with OsStrPattern
consensus.
### (nominated) rust.tf/104642 *Tracking Issue for get\_many\_mut*
Now in FCP as `get_disjoint_mut`. Unnominating
### (nominated) rust.tf/127154 *Tracking Issue for anonymous pipe API*
Now in FCP.
### (nominated) rust.tf/133829 *AtomicT::fetch\_update\_infallible*
Discussed before.
Naming is terrible for now, but accepted as unstable.
`fetch_update_infallible` and `do_fetch_update` were discussed. Neither was liked.
Mara (joking): We clearly need function overloads. Let's tell lang.
Mara: deprecate `fetch_update` and add both `fetch_and_update` and `try_fetch_and_update`?
Amanieu: deprecate `fetch_update` and add both `update` and `try_update`?
Mara: Technically it doesn't need to return the old value. You can store it yourself in the closure.
Could return nothing, or both..
Consensus: deprecating is fine if we find a good new (pair of) function(s). Just not clear yet what those would be.
### Use CLOCK_BOOTTIME for Instant in Fuchsia/Android #132331 https://github.com/rust-lang/rust/pull/132331
Mara: Wouldn't that break usages of futex() with absolute timestamps in std? At least on Android.
(Later: looks like we only ever use Duration with futexes, so doesn't break things today.)
The 8472: They now only want it for Fuchsia.
Mara: Fine with me on Fuchsia.
{Discussion on pronounciation of Fuchsia.}
The 8472: The fuchsia folks want a guarantee that it'll always be boottime on fuchsia.
Should we give that guarantee?
Mara: Right.
The 8472: Not all platforms have the boottime clock.
(end of the hour. discussion cut short.)
Ask if a clock source API and letting the default unspecified would suffice.
Amanieu to reply
### (new change proposal) rust.tf/libs507 *float::not\_nan*
consensus: reject
The 8472 to reply
### (new change proposal) rust.tf/libs506 *In\-place \`String::replace\_first\` and \`String::replace\_last\`*
Josh to reply
### (new change proposal) rust.tf/libs505 *A datatype representing an allocation*
consensus close, though maybe ask for more details since there usecase was not entirely clear and there might be some different API we're missing.
The 8472 to reply
### (new change proposal) rust.tf/libs504 *Implement Read and Write for Arc\<T\> for types where &T implements Read and Write, \*and\* it is safe to do so.*
### (new change proposal) rust.tf/libs502 *\`BStr\` and \`BString\` transparent wrapper types for probably\-human\-readable text*
### (new change proposal) rust.tf/libs501 *ACP: Add floating point representation conversions*
### (new change proposal) rust.tf/libs495 *add an \`extract\` macro which extracts values matched in a pattern*
### (new change proposal) rust.tf/libs487 *Path::is\_trivial*
### (new change proposal) rust.tf/libs484 *Support \`vec!\[const { ... }; n\]\` syntax for creating a \`Vec\` of non\-\`Clone\` values*
### (new change proposal) rust.tf/libs483 *\`Box::new\_from\_ref\` for making a \`Box\<T\>\` from a \`&T\` where \`T: CloneToUninit + ?Sized\` (and \`Rc\` and \`Arc\`)*
### (stalled change proposal) rust.tf/libs314 *Add security\_attributes() to windows::OpenOptionsExt*
### (stalled change proposal) rust.tf/libs150 *\`Option::as\_\`(\`mut\_\`)\`slice\` and \`::into\_slice\`*
Closed, already completed (`into_slice` rejected).
### (stalled change proposal) rust.tf/libs357 *ACP: \`std::collections::{hash\_map, btree\_map}::Entry::{is\_vacant, is\_occupied}\`*
### (stalled change proposal) rust.tf/libs344 *ACP: Add \`std::string::String::replace\_and\_count\` and/or \`replace\_with\`*
### (stalled change proposal) rust.tf/libs347 *Context reactor hook*
### (stalled change proposal) rust.tf/libs295 *Create iterator function in std libs: split\_item\_mut()*
### (stalled change proposal) rust.tf/libs111 *Restructure ptr\_metadata to minimal support*
### (stalled change proposal) rust.tf/libs210 *Add associated consts to f32, f64 for mathematical constants*
### (stalled change proposal) rust.tf/libs364 *ACP: Add {Box, Rc, Arc}::map and {Box, Rc, Arc}::try\_map*
### (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)_