---
# System prepended metadata

title: Libs Meeting 2021-01-20/21
tags: [Minutes, Libs Meetings]

---

# Libs Meeting 2021-01-20/21

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

**Attendees**: Jane, Josh Triplett, KodrAus, sfackler, Mara

## Agenda


- Project group status updates
  - Portable SIMD
  - Error Handling
- Libs governance status updates
  - Libs Impl team update
    - https://hackmd.io/AFIoTuatR5-RCJiHqGZk-A?view
  - Libs membership
- Edition 2021
  - Time to write RFC(s)!
- [Open action items](https://hackmd.io/ovrbJj6CRduRgSA0Wzg2zg)
- Triage
  - Next week!
- Anything else?

### Error Handling Status Update

6 active contributors :tada: (Including ashley and I)

#### Work we've completed so far:

- stabilizing backtrace
  - updated backtrace format to be consistent for both panic backtraces and directly captured backtraces
  - updated the stabilization PR for backtrace to resolve merge conflicts
  - Blocker: Working on proof of concept for `Backtrace` in `core`, had a productive convo with the compiler team yesterday
- work in progress on implementing a frames iteration API for Backtrace
- implemented error for &E where E: Error
  - proactively fixing regressions caught by crater
- implemented Error for Arc<E> where E: Error + ?Sized
  - This is a departure from how `Box` implements these traits and precludes adding a `From` impl, which we felt was the right decision, and that box implementing `From` was a mistake, or at least would be a mistake in today's version Rust
- Researching issues raised by community around `Termination` and `ExitStatus`
- Updated documentation around `resume_unwind` and `catch_unwind` for consistency
- Beginning work on Error Handling Book (depends on error trait issue)

#### Stalled Work

- Generic Member Access RFC
  - Needs to be updated a bit and then pushed forward. Libs team review needed for `dyno` portions of proposed API
- nicer assert messages
  - A contributor has been steadily working on this since we started the project group but has so far made no progress. Recently learned that another contributor has already implemented this in `assert2` and is planning to implement this soon. Need to coordinate with project group member to mediate this.
- Consistent Error Reporting RFC
  - still just an idea, needs major design work, error trait issue

#### Error Trait Issue (**Needs Decision**)

- https://github.com/rust-lang/project-error-handling/issues/23
- https://github.com/rust-lang/project-error-handling/issues/27

Last comment of second link contains the most succinct summary of my view on the issue.

The main question is: **Is the `Error` trait primarily an interface for reporting errors or primarily an interface for reacting to specific type erased errors?**

What we decide changes what recommendations we make on how to implement the `Error` trait.

##### Outcomes:

- Try and treat `Display` on `Error` as if it's part of a larger context, come up reporting infra in `std` to support that and libraries will start to move towards it
- Context gathering vs context reporting. The distinction should be made because it's right, not because it's a limitation of `impl From<E: Error>` vs `impl Error`
- Consider specializing `.unwrap()` on `T: Error` to use this infra

## Triage

### FCPs

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

  - [[close 2944](https://github.com/rust-lang/rfcs/issues/2944#issuecomment-714795934)] *RFC: add the Freeze trait to libcore/libstd* - (2 checkboxes left)
  - [[close 2708](https://github.com/rust-lang/rfcs/issues/2708#issuecomment-724941427)] *Generic Pointer to Field* - (3 checkboxes left)
  - [[merge 2996](https://github.com/rust-lang/rfcs/issues/2996#issuecomment-747664240)] *adds async stream rfc* - (5 checkboxes left)
</details>
<details><summary><a href="https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AT-libs+label%3Aproposed-final-comment-period">14 <code>rust-lang/rust</code> FCPs</a></summary>

  - [[merge 80962](https://github.com/rust-lang/rust/issues/80962#issuecomment-761024599)] *Stabilize remaining integer methods as \`const fn\`* - (3 checkboxes left)
  - [[close 80595](https://github.com/rust-lang/rust/issues/80595#issuecomment-753374897)] *\`impl PartialEq&lt;Punct&gt; for char\`; symmetry for #78636* - (4 checkboxes left)
  - [[merge 76904](https://github.com/rust-lang/rust/issues/76904#issuecomment-755473141)] *Tracking Issue for feature(int\_bits\_const): &lt;integer&gt;::BITS* - (3 checkboxes left)
  - [[merge 80011](https://github.com/rust-lang/rust/issues/80011#issuecomment-744061248)] *Stabilize \`peekable\_next\_if\`* - (4 checkboxes left)
  - [[merge 80841](https://github.com/rust-lang/rust/issues/80841#issuecomment-757339261)] *Add \`OsStr::display\` as a counterpart to \`Path::display\`* - (4 checkboxes left)
  - [[merge 79805](https://github.com/rust-lang/rust/issues/79805#issuecomment-740167822)] *Rename Iterator::fold\_first to reduce and stabilize it* - (3 checkboxes left)
  - [[merge 80279](https://github.com/rust-lang/rust/issues/80279#issuecomment-751298009)] *Implement missing \`AsMut&lt;str&gt;\` for \`str\`* - (3 checkboxes left)
  - [[merge 80053](https://github.com/rust-lang/rust/issues/80053#issuecomment-746749439)] *stabilise \`cargo test \-\- \-\-include\-ignored\`* - (3 checkboxes left)
  - [[merge 78880](https://github.com/rust-lang/rust/issues/78880#issuecomment-759882257)] *Add \`NotSupported\` to \`std::io::ErrorKind\`* - (4 checkboxes left)
  - [[merge 79285](https://github.com/rust-lang/rust/issues/79285#issuecomment-739437474)] *Stabilize Arc::{increment,decrement}\_strong\_count* - (0 checkboxes left)
    Blocked on an open concern.
  - [[merge 80470](https://github.com/rust-lang/rust/issues/80470#issuecomment-752521366)] *Stabilize by\-value \`\[T; N\]\` iterator \`core::array::IntoIter\`* - (3 checkboxes left)
  - [[merge 81048](https://github.com/rust-lang/rust/issues/81048#issuecomment-761101127)] *Stabilize \`core::slice::fill\_with\`* - (3 checkboxes left)
  - [[merge 77704](https://github.com/rust-lang/rust/issues/77704#issuecomment-760056634)] *Implement indexing slices with pairs of core::ops::Bound&lt;usize&gt;* - (3 checkboxes left)
  - [[merge 81198](https://github.com/rust-lang/rust/issues/81198#issuecomment-763187794)] *Remove requirement that forces symmetric and transitive PartialEq impls to exist* - (3 checkboxes left)
</details>
<p></p>

[Amanieu (1)](https://rfcbot.rs/fcp/Amanieu), [BurntSushi (10)](https://rfcbot.rs/fcp/BurntSushi), [KodrAus (12)](https://rfcbot.rs/fcp/KodrAus), [dtolnay (2)](https://rfcbot.rs/fcp/dtolnay), [m-ou-se (3)](https://rfcbot.rs/fcp/m-ou-se), [sfackler (9)](https://rfcbot.rs/fcp/sfackler), [withoutboats (16)](https://rfcbot.rs/fcp/withoutboats)

### Nominated

- [1 `rust-lang/rfcs` items](https://github.com/rust-lang/rfcs/issues?q=is%3Aopen+label%3AT-libs+label%3AI-nominated)
  - [[2979](https://github.com/rust-lang/rfcs/pull/2979)] *\[RFC\]: Libs Team Governance*
- [5 `rust-lang/rust` items](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AT-libs+label%3AI-nominated)
  - [[66481](https://github.com/rust-lang/rust/issues/66481)] *Context and Waker might be accidentally \`Sync\`*
  - [[74304](https://github.com/rust-lang/rust/pull/74304)] *Stabilize the Wake trait*
    FCP finished. Should be merged?
  - [[79245](https://github.com/rust-lang/rust/pull/79245)] *BTreeMap: remove Ord bound where it's not needed*
    FCP finished. Should be merged?
  - [[80886](https://github.com/rust-lang/rust/pull/80886)] *Stabilize raw ref macros*
  - [[80962](https://github.com/rust-lang/rust/pull/80962)] *Stabilize remaining integer methods as \`const fn\`*

### Waiting on team

- [0 `rust-lang/rfcs` items](https://github.com/rust-lang/rfcs/issues?q=is%3Aopen+label%3AT-libs+label%3AS-waiting-on-team)
- [5 `rust-lang/rust` items](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AT-libs+label%3AS-waiting-on-team)
  - [[71780](https://github.com/rust-lang/rust/pull/71780)] *Implement String::remove\_matches*
  - [[72981](https://github.com/rust-lang/rust/pull/72981)] *Stabilize the backtrace feature.*
    FCP finished. Should be merged?
  - [[75180](https://github.com/rust-lang/rust/pull/75180)] *Implement Error for &(impl Error)*
    FCP finished. Should be merged?
  - [[76901](https://github.com/rust-lang/rust/pull/76901)] *Implement RFC 2500 Needle API (Part 1)*
  - [[77326](https://github.com/rust-lang/rust/pull/77326)] *Stabilize \`Option::unwrap\_none\` and \`Option::expect\_none\`*

### Needs decision

- [14 `rust-lang/rust` items](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AT-libs+label%3AI-needs-decision)
  - [[21319](https://github.com/rust-lang/rust/issues/21319)] *Consider making std::thread::Builder reusable*
  - [[25053](https://github.com/rust-lang/rust/issues/25053)] *UnsafeCell should implement the Copy trait*
  - [[26951](https://github.com/rust-lang/rust/issues/26951)] *Abort on some large allocation requests, Panic on other*
  - [[29494](https://github.com/rust-lang/rust/issues/29494)] *Command does not escape arguments as expected on windows*
  - [[37868](https://github.com/rust-lang/rust/issues/37868)] *std::process::Command's current\_dir behaves differently on Unix and Windows, with respect to relative exe paths*
  - [[39081](https://github.com/rust-lang/rust/issues/39081)] *\`std::env::temp\_dir\` should return env var XDG\_RUNTIME\_DIR under Linux if declared*
      - https://github.com/rust-lang/rust/pull/81219
  - [[39186](https://github.com/rust-lang/rust/issues/39186)] *Document that std::os::unix::process::CommandExt.uid() triggers setgroups(0,0)*
  - [[42412](https://github.com/rust-lang/rust/issues/42412)] *Incorporate @raphlinus' container cheat sheet into the std::collections module docs*
  - [[42951](https://github.com/rust-lang/rust/issues/42951)] *Spec request. Hasher: is write\_u32 eqivalent to 4 calls of write\_u8?*
  - [[56889](https://github.com/rust-lang/rust/issues/56889)] *Write::write\_all erroring when encountering Ok(0) interacts poorly with the contract of Write::write*
  - [[59878](https://github.com/rust-lang/rust/issues/59878)] *Box\<\[T\]\> should have an IntoIter implementation.*
  - [[60880](https://github.com/rust-lang/rust/issues/60880)] *Should Thumb bugs get increased visibility, e.g. Tier 1 status?*
  - [[62726](https://github.com/rust-lang/rust/issues/62726)] *Tracking issue for io\_slice\_advance*
  - [[79490](https://github.com/rust-lang/rust/issues/79490)] *Whether floating point value Display should adhere to IEEE standard?*

## Actions

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

