# Libs Meeting 2020-11-11 ###### tags: `Libs Meetings` `Minutes` ## Agenda - Project group updates - T-libs vs libs-impl and the role of library-reviewers - Missing guidelines - Triage - Anything else? ## Missing guidelines Things that could use a guideline, because they keep coming up. This doesn't need to be discussed in detail right now. But we should at least discuss how/where/when to address these. - When to use `#[must_use]`: [[48926](https://github.com/rust-lang/rust/issues/48926)] [[78225](https://github.com/rust-lang/rust/pull/78225)] [[71256](https://github.com/rust-lang/rust/pull/71256)] [[66116](https://github.com/rust-lang/rust/issues/66116)] [[api-guidelines 226](https://github.com/rust-lang/api-guidelines/issues/226)] - When to use `Pin`. [[77726](https://github.com/rust-lang/rust/pull/77726)] [[77801](https://github.com/rust-lang/rust/pull/77801)] [[78370](https://github.com/rust-lang/rust/pull/78370)] - How to handle tier 3 sys changes. \ These are usually accepted without review. Should we at least ping the 'owner' of that platform? Is there a list of contacts for these platforms? - How careful we should be with *unstable* changes. \ (E.g. `Duration::zero()` -> `Duration::ZERO` or removing/breaking `std::io::set_panic`.) ## Triage Issues with a `I-nominated` label have been flagged for discussion. **FCPs** Open FCPs: https://rfcbot.rs/ \ ([Amanieu](https://rfcbot.rs/fcp/Amanieu), [BurntSushi](https://rfcbot.rs/fcp/BurntSushi), [dtolnay](https://rfcbot.rs/fcp/dtolnay), [KodrAus](https://rfcbot.rs/fcp/KodrAus), [m-ou-se](https://rfcbot.rs/fcp/m-ou-se), [sfackler](https://rfcbot.rs/fcp/sfackler), [withoutboats](https://rfcbot.rs/fcp/withoutboats)) - [`rust-lang/rust` FCPs](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AT-libs+label%3Aproposed-final-comment-period) - [[64260](https://github.com/rust-lang/rust/issues/64260#issuecomment-723050764)] *`bool::then(..) -> Option` (and `then_some`?)* \ FCP already happened twice, both blocked by a concern about `then_some` (and naming in general). withoutboats now suggested only stabilizing `then` and not `then_some`. Needs confirmation/checkmarks from KordAus, sfackler, Amanieu, dtolnay. - [`rust-lang/rfcs` FCPs](https://github.com/rust-lang/rfcs/pulls?q=is%3Aopen+label%3AT-libs+label%3Aproposed-final-comment-period) **Nominated** - [`rust-lang/rust` items](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AT-libs+label%3AI-nominated) - [[76041](https://github.com/rust-lang/rust/pull/76041)] *impl ops::Try for Ordering* \ This implements `Try` for `Ordering`, such that you can use `?` to return a non-`Equal` result right away. This is often useful, but it seems to do the exact opposite of what `?` does on an `Option` (returning the 'some' instead of the 'none'). - [[78618](https://github.com/rust-lang/rust/pull/78618)] *Add IEEE 754 compliant fmt/parse of -0, infinity, NaN* \ Changes the way `-0` is printed. Currently `format!("{}", -0.0) == "0"` and `format!("{:+}", -0.0) == "+0"`. This changes *both* to `-0`. (And some discussion about printing `-0.0` instead.) - [`rust-lang/rfcs` items](https://github.com/rust-lang/rfcs/issues?q=is%3Aopen+label%3AT-libs+label%3AI-nominated) - [[RFC 2996](https://github.com/rust-lang/rfcs/pull/2996)] *async `Stream` trait* **Waiting on team** - [`rust-lang/rust` items](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AT-libs+label%3AS-waiting-on-team) - [`rust-lang/rfcs` items](https://github.com/rust-lang/rfcs/issues?q=is%3Aopen+label%3AT-libs+label%3AS-waiting-on-team) **Needs decision** - [`rust-lang/rust` items](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AT-libs+label%3AI-needs-decision) - [[74699](https://github.com/rust-lang/rust/pull/74699)] *Mark `-1` as an available niche for file descriptors* \ `Option<File>` will be smaller, but `File::from_raw_fd` will be unsafer. - [[74024](https://github.com/rust-lang/rust/pull/74024)] *Improve slice.binary_search_by()'s best-case performance to O(1)* \ Makes `[T]::binary_search_by`'s behaviour match the description and signature better. Improves performance in many cases. Decreases performance in some cases. Slightly changes behaviour that breaks a few crates. ## Notes - Project Group updates - Backtrace stabilization is still in the same state - We don't feel changes to backtrace formatting needs to block stabilization - Portable SIMD is mostly blocked on compiler work right now, so nothing for Libs yet - T-libs vs libs-impl vs library-reviewers - We set up the library-reviewers team to have a place to give people `r+` who want to work on the standard library without the overarching burden of RFCs - We passed responsibility of implementation maintenance to the compiler team - What do we want to do going forward? - Use library-reviewers as libs-impl. Accept there's still overlap with libs - Shift triage/backlog bonanza into libs-impl and describe this team - `#[must_use]` - We tend to decide these kinds of things on a case-by-case basis in Lang. We can do the same here in Libs - Create a Zulip channel for guidelines discussions - Try revive the API Guidelines - Our forge docs are also a good place for this - More guidance on changes to unstable methods - When is it ok to make breaking changes to unstable features? - Sometimes we're ok with it, sometimes we're not - When to use `Pin` - Usages and new APIs need compelling motivations - Reviewing `Pin` additions is very tricky - The benchmark for usefulness needs to remove unsafe code in real libraries - Let an ecosystem develop outside of `std`. Don't expose new `Pin` APIs pro-actively from `std` - It is ok to experiment with `Pin` internally - Tier 3 platforms - Experts map should include owners for tier 3 platforms so we have people to ping when changes show up - `binary_search_by` - Even if the benchmarks don't show big improvements we're on board with the semantic clean up the change makes - `-0.0` - Don't print the sign for `-0.0` in `Display` unless you ask for it - Don't print `-0` as `+0` if you do ask for a sign Do another triage next week to work through more of our open issues.