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