---
# System prepended metadata

title: Libs-API Meeting 2022-06-08
tags: [Minutes, Libs Meetings]

---

# Libs-API Meeting 2022-06-08

###### tags: `Libs Meetings` `Minutes`

**Meeting Link**: https://meet.jit.si/rust-libs-meeting-crxoz2at8hiccp7b3ixf89qgxfymlbwr
**Attendees**: Amanieu, David, Jane, Josh Triplett, Mara, The 8472, Urgau, Dan Gohman

## Agenda

- Potential breaking change to libc
    - https://github.com/rust-lang/libc/pull/2813
    - Essentially, `struct sigevent` was added before Rust had unions.
    - We could maybe get rid of cfg(libc_union).
    - We might want to significantly raise libc's MSRV.
      - We could get input from the wider Rust community.
      - David: Based on my experience, most people seem to care about MSRV because they think they have users that care, but most of those users care because .. <infinite loop\>. Very few people build new crates with old toolchains in production.
      - If we bump to 1.51, we can remove all checks in `build.rs`.
    - Mara: We could use a Deref+DerefMut impl for the struct to allow the old field to still 'exist'.
      - Amanieu: Will suggest that to the PR author.
      - David: The fields of the union have a different size. This can expose uninit bytes. :boom:
      - :(
    - Jane: Lang support for the semver trick would be nice.
      - David: Glob import already makes that easy. However: docs should still be nice, and not just show a glob re-export and one type.
    - David: A major version of libc would be good. It might not go smoothly, but that helps making it go smoothly the next time.
    - Josh: We could make this more maintainable by (initially) building the final version of libc 0.2 and the initial version of libc 0.3 from the same sources. Add a feature flag in `build.rs` based on `CARGO_PKG_NAME`, use that feature flag to let us develop 0.2 (re-exports of everything compatible from 0.3 and implementations of the incompatible structures), then upload and tag the final 0.2 version, then rip out all the 0.2 support.
- libc Eq/PartialEq/Hash impls for things with unions:
  - Current implementations are a bit broken.
  - RFC 2235 promises all libc types implement Debug, Eq, PartialEq and Hash.
  - Amanieu: We should change that, to not provide those traits if we can't derive them.
  - Josh: :+1: to doing that in libc 0.3
  - Mara: Debug we probably still want on all types, even if it can only print `"TypeName { .. }"`.
      - Josh: We could add a macro to implement Debug for types, and perhaps later replace that with built-in Rust support for using attributes to ignore a field for a derive.
- Triage
- Anything else?

## Triage

### FCPs


<a href="https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AT-libs-api+label%3Aproposed-final-comment-period">12 <code>rust-lang/rust</code> FCPs</a>

  - [[merge 89238](https://github.com/rust-lang/rust/issues/89238#issuecomment-927177703)] *deprecate f{32,64}::DIGITS* - (1 checkboxes left)
  - [[merge 90291](https://github.com/rust-lang/rust/issues/90291#issuecomment-955599591)] *Loosen the bound on the Debug implementation of Weak.* - (1 checkboxes left)
  - [[merge 91789](https://github.com/rust-lang/rust/issues/91789#issuecomment-1026130086)] *Tracking Issue for try\_reserve method on more containers* - (1 checkboxes left)
  - [[merge 89780](https://github.com/rust-lang/rust/issues/89780#issuecomment-1057495167)] *Tracking Issue for poll.ready()?* - (4 checkboxes left)
  - [[merge 94786](https://github.com/rust-lang/rust/issues/94786#issuecomment-1064599953)] *Document NonZeroXxx layout guarantees* - (2 checkboxes left)
  - [[merge 84186](https://github.com/rust-lang/rust/issues/84186#issuecomment-1102569115)] *Tracking Issue for \`nonzero\_ops\`* - (3 checkboxes left)
    - Jane: This issue has been split into a partial stabilization, I think we should FCP the new PR and cancel the existing FCP
  - [[merge 97300](https://github.com/rust-lang/rust/issues/97300#issuecomment-1134102126)] *Implement \`FusedIterator\` for \`std::net::\[Into\]Incoming\`* - (4 checkboxes left)
  - [[merge 80437](https://github.com/rust-lang/rust/issues/80437#issuecomment-1125982498)] *Tracking Issue for \`box\_into\_inner\`* - (3 checkboxes left)
  - [[merge 88581](https://github.com/rust-lang/rust/issues/88581#issuecomment-1118123560)] *Tracking Issue for \`int\_roundings\`* - (1 checkboxes left)
  - [[merge 91006](https://github.com/rust-lang/rust/issues/91006#issuecomment-1134593095)] *Tracking Issue for \`const\` checked slice to \`str\` conversions* - (3 checkboxes left)
  - [[merge 97712](https://github.com/rust-lang/rust/issues/97712#issuecomment-1146735882)] *ptr::copy and ptr::swap are doing untyped copies* - (5 checkboxes left)
  - [[merge 97202](https://github.com/rust-lang/rust/issues/97202#issuecomment-1150040250)] *os str capacity documentation* - (4 checkboxes left)


[yaahc (7)](https://rfcbot.rs/fcp/yaahc), [BurntSushi (6)](https://rfcbot.rs/fcp/BurntSushi), [joshtriplett (3)](https://rfcbot.rs/fcp/joshtriplett), [m-ou-se (7)](https://rfcbot.rs/fcp/m-ou-se), [Amanieu (6)](https://rfcbot.rs/fcp/Amanieu), [dtolnay (3)](https://rfcbot.rs/fcp/dtolnay)

### Nominated

- [3 `rust-lang/rust` `I-libs-api-nominated` items](https://github.com/rust-lang/rust/issues?q=label:I-libs-api-nominated+is:open)
  - [[78802](https://github.com/rust-lang/rust/pull/78802)] *Implement network primitives with ideal Rust layout, not C system layout*
    - Jane: no update since last meeting, should remove nominated label, might be time to FCP
  - [[83186](https://github.com/rust-lang/rust/issues/83186)] *Tracking Issue for path\_try\_exists*
    - Option 1: Only Path::try_exist
    - Option 2: Path::try_exists + fs::try_exists
    - Option 3: Path::try_exists + fs::exists.
    - Option 4: Path::try_exists + fs::try_exists + fs::exists.
    - Option 5: Start Rust 2.0 and fix the mistake of Path::exists.
    - We can start with option 1, as a prartial stabilization.
  - [[95290](https://github.com/rust-lang/rust/pull/95290)] *Document that \`OsString\` and \`OsStr\` are bytes; provide conversions to bytes*
    - Non-controversial OsStr documentation went to a different PR. After that's merged this can be rebased on that.
    - David: Might have a counter-proposal. Something like `as_unspecified_encoded_bytes()`. Still need to write that comment.
    - Josh: Sounds okay.

### Waiting on team

None

### Needs decision

None

### Stalled Tracking Issues

- [30 `rust-lang/rust` `T-libs-api` `C-tracking-issue` items](https://github.com/rust-lang/rust/issues?q=label:T-libs-api+label:C-tracking-issue+is:open+sort:updated-asc)
  - [[55132](https://github.com/rust-lang/rust/issues/55132)] *Tracking issue for thread::Builder::spawn\_unchecked*
  - [[41758](https://github.com/rust-lang/rust/issues/41758)] *Tracking issue for Vec::resize\_with and resize\_default*
    FCP finished. Should be merged?
  - [[66893](https://github.com/rust-lang/rust/issues/66893)] *Tracking issue for atomic\_mut\_ptr*
  - [[71503](https://github.com/rust-lang/rust/issues/71503)] *Tracking Issue for binary heap retain*
  - [[72505](https://github.com/rust-lang/rust/issues/72505)] *Tracking issue for \`#!\[feature(const\_float\_classify)\]\`*

## Actions

- [ ] Reply to all issues/PRs discussed in this meeting, or add them to the [open action items](https://hackmd.io/ovrbJj6CRduRgSA0Wzg2zg).

_Generated by [fully-automatic-rust-libs-team-triage-meeting-agenda-generator](https://github.com/rust-lang/libs-team/tree/main/tools/agenda-generator)_

