# 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<Punct> 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): <integer>::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<str>\` 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<usize>* - (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).