---
# System prepended metadata

title: PEH Meeting Agenda - 2020-10-12
tags: [Minutes, Error Handling]

---

# PEH Meeting Agenda - 2020-10-12

###### tags: `Error Handling` `Minutes`

- [2020-09-28 Meeting Minutes](https://hackmd.io/th5k9_pBRBGmpgnFWJzUHw?both)

## Action Items

- Implement trait based proof of concept for `Backtrace` in `core` (Jane Lusby)
- Setup `The Rust Error Book` (must-compute, Charles Ellis O'Riley Jr, and Jakub Duchniewicz)
- Draft a [blog post](https://hackmd.io/GMLcORX_R7W4de0ZryDIxg?view) detailing the long-term vision of what this group thinks Rust error handling should look like (Sean Chen)
- Status Updates on Tracked issues (What's the current status, what are the next steps, what are the blockers, is it actively being worked on)
    - [Generic Member Access](https://github.com/rust-lang/rfcs/pull/2895) (Jane Lusby)
    - [Fix the error trait / Stabilizing Backtrace](https://github.com/rust-lang/rust/issues/53487) (Jane Lusby)
    - [stabilizing error source iterators](https://github.com/rust-lang/rust/issues/58520) (Oliver)
    - [Box error alias](https://github.com/rust-lang/rfcs/pull/2820) (unassigned)
    - [stabilizing Error::type_id](https://github.com/rust-lang/rust/issues/60784) (Jakub Duchniewicz)
    - [PanicInfo::message](https://github.com/rust-lang/rust/issues/66745) (DPC)
    - [nicer assert messages](https://github.com/rust-lang/rust/issues/44838) (Charles Ellis O'Riley Jr.)
 - Moving forward with adding an iterator API to `backtrace` (Sean Chen)

## Agenda Items

- Review action items from last meeting
- Review open issues on project group repository
- Anything to buble up to the Libs meeting?

# Meeting Minutes

## Participants

People in attendance:
- Jane Lusby
- Sean Chen
- Ashley Mannix
- Kyle Strand
- Lance Zhang
- Jeremiah Senkpiel
- Jakub Duchniewicz
- DPC
- oliver
- Charles Ellis O'Riley Jr.
- must-compute
- Jubilee Young

## Backtrace in core

- So far the implementation is moving forward fine, but there are questions around the hooks
- Not clear how to set them up with a default in `no_std` so users don't _need_ to write one like `#[panic_handler]`
- Current work in progress [here](https://github.com/rust-lang/rust/pull/77384)
- There's enough sketched out that it shouldn't be a blocker for stabilizing `backtrace` anymore

## The Rust Error Book

- We now have a folder in the `project-error-handling` repository for content

## Log-term project group vision and goals

- Draft here: https://hackmd.io/GMLcORX_R7W4de0ZryDIxg?view

## Generic member access RFC

- There's an updated API in `object-provider` that the RFC would like to use
- Once the content is updated it needs some Libs input
- There could be some tie in with `tide`'s `Response` type?

## Fix the `Error` trait / Stabilizing `backtrace`

- Covered in the earlier discussion on _Backtrace in core_
- There could be some documentation work to do on `backtrace`

## Stabilizing `Error` source iterators

- stabilizing error source iterators
  - trait objects vs. provided methods
  - [stabilization report 2020-09-14](https://github.com/rust-lang/rust/issues/58520#issuecomment-691982191)
    - unergonomic use-cases ---> difficulties stabilizing
    - bugs
  - blocked on [#53487](https://github.com/rust-lang/rust/issues/53487)
- [#75180](https://github.com/rust-lang/rust/pull/75180) might feed into this too
- related crate [`error-chain`](https://crates.io/crates/error-chain)

## Stabilizing `Error::type_id`

- Several possible approaches, but all are waiting for other stabilizations/RFCs
    - #[marker] trait stabilization: https://github.com/rust-lang/rust/issues/29864
    - negative trait impls
    - dynamic vtable type_id (like C++ typeid keyword) https://github.com/rust-lang/rfcs/pull/2580
    - final keyword -> no overriding of trait any more
    - new trait TypeInfo https://github.com/rust-lang/rfcs/pull/2738
- Not clear it's something we want to stabilize
- Looks like a rabbit hole we don't want to go down right now

## `PanicInfo::message`

- No progress made here

## Nicer Assert Messages

- [RFC](https://github.com/rust-lang/rfcs/pull/2011) has been approved, with no implementation started yet 
- Does this need to be implemented using the compiler's built-in proc macros, or can it be done as an external crate using `pro-macros` and `syn`?
    - Need external thoughts/mentorship on this question

## Iterating over `Backtrace` frames

- Just starting out, so there hasn't been much discussion yet
- The `backtrace` crate has a `frames()` fn that already exposes its individual frames
- We could propose basically the same thing for `std`'s `Backtrace` type

# Outcomes

## Backtrace in core

- @KodrAus to ping https://github.com/rust-lang/rust/pull/72981 and raise at Libs meeting RE `backtrace` stabilization

## Long-term project group vision and goals blog post

- @Jane Lusby @Jakub Duchniewicz @KodrAus to review draft content

## Generic member access RFC

- @Jane Lusby to incorporate changes from `object-provider`
- @KodrAus to review RFC and ping Libs

## Stabilizing `Error` source iterators

- Looks like many parts of this are stuck on fixing the `Error` trait, so our efforts should be focused here to push this forward

## Stabilizing `Error::type_id`

- Putting this one on the back burner

## Nicer Assert Messages

- Look into whether we can implement an external POC for this ourselves
- Need external advice/mentorship (possibly from t-libs-impl) before we can get started on it

## Iterator API on Backtrace

- @Sean Chen to look more into this initiative
- Export an identical `fn frames(&self) -> &[BacktraceFrame]` to `std`
- Add it as an unstable API to `Backtrace` without an RFC to start with (just an FCP on the implementation itself)


