---
# System prepended metadata

title: Libs-API Meeting 2024-12-17
tags: [Minutes, Libs Meetings]

---

---
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)_
