---
# System prepended metadata

title: Libs Meeting 2020-11-11
tags: [Minutes, Libs Meetings]

---

# 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.
