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