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