|
| 1 | +# Error Handling Project Group Agenda - 2020-09-28 |
| 2 | + |
| 3 | +###### tags: `Error Handling` `Minutes` |
| 4 | + |
| 5 | +## Agenda Items |
| 6 | + |
| 7 | +- Prototyping an implementation of `std::core::Error` and stabilizing `#[feature(backtrace)]` |
| 8 | +- Identifying existing issues and RFCs that we should track |
| 9 | + - https://github.com/rust-lang/rfcs/pull/2895 |
| 10 | +- Planning for "Communicating best practices" |
| 11 | +- "How users expect error handling to be, As in, we take a leap into the future and assume all this was implemented into the language, then how it would potentially look" |
| 12 | + |
| 13 | + |
| 14 | +# Meeting Minutes |
| 15 | + |
| 16 | +## Participants |
| 17 | + |
| 18 | +People in attendance: |
| 19 | +- Jane Lusby |
| 20 | +- Sean Chen |
| 21 | +- Ashley Mannix |
| 22 | +- DPC |
| 23 | +- Mukund Lakshman |
| 24 | +- Jakub Duchniewicz |
| 25 | +- must-compute |
| 26 | +- Lance Zhang |
| 27 | +- Oliver |
| 28 | +- Charles Ellis O'Riley Jr. |
| 29 | +- Kyle Strand |
| 30 | +- Lokathor |
| 31 | +- Jubilee Young |
| 32 | + |
| 33 | +## Topic 1: Discussing stabilizing `Backtrace` |
| 34 | +- Global hooks vs Boxing vs a trait-based approach for stabilizing `Backtrace` in `core`. |
| 35 | +- Going with the trait-based impl for `Backtrace` in core. |
| 36 | + - Private trait + public newtype wrapper. |
| 37 | + - Start with `eddyb`'s impl and see how many hooks are necessary along the way. |
| 38 | +- private trait with a public newtype wrapper |
| 39 | + - newtype wrapper is an interface not subject to coherence so we can add new |
| 40 | + methods without worrying about breaking changes downstream |
| 41 | +- https://doc.rust-lang.org/stable/src/std/io/error.rs.html#67-71 |
| 42 | +- trait-based approaches have fewer magic compiler pieces and so would be easier to put together |
| 43 | +- `write_backtrace_to(&mut dyn FormatterThing) -> Result<(),FormatterThing::Error>` |
| 44 | + - ultimately about moving `Error` to core |
| 45 | +- should we do a trait object based solution internally with an unstable `Backtrace` |
| 46 | + trait in core and a stable `Backtrace` type in core or should it use global hooks |
| 47 | + like `panic_impl` |
| 48 | +- **need a prototype solution for exposing `Backtrace` as a type in `core` with the interface it currently provides in `std`** |
| 49 | + |
| 50 | +## Topic 2: What RFCs should this group be tracking? |
| 51 | +- This group will have its own Project board to track relevant issues/RFCs. |
| 52 | +- Prep status reports on relevant issues we're tracking for future meetings. |
| 53 | +- Pulled from the [tracking board](https://github.com/rust-lang/libs-team/projects/2#column-10224181) |
| 54 | + - [#58520 tracking issue for error source iterators](https://github.com/rust-lang/rust/issues/58520) |
| 55 | + - [#53487 tracking issue for RFC 2504, "fix the error trait"](https://github.com/rust-lang/rust/issues/53487) |
| 56 | + - [#44838 tracking issue for RFC 2011: nicer assert messages](https://github.com/rust-lang/rust/issues/44838) |
| 57 | + - [#2895 RFC: generic member access for dyn error trait objects](https://github.com/rust-lang/rfcs/pull/2895) |
| 58 | +- [#58520 tracking issue for error source iterators](https://github.com/rust-lang/rust/issues/58520) |
| 59 | + |
| 60 | +## Topic 3: Planning for "Communicating Best Practices" |
| 61 | +- Facilitate communication of best practices via a Book/documentation. |
| 62 | + - Should include some guidance on FFI error handling. |
| 63 | +- Adding a book section to the project repo (using mdbook). |
| 64 | +- Publish *The Rust Error Book* (name subject to change) and potentially contribute to *The Book* to make its error handling recommendations consistent with what this group decides. |
| 65 | + |
| 66 | +## Topic 4: What is the long-term vision of what error handling in Rust looks like? |
| 67 | +- `Error` in `core`. |
| 68 | +- Stabilization of unstable `Error` interfaces. |
| 69 | +- Iterator API on `Backtrace`. |
| 70 | +- Generic member access (possibly with two-way flow). |
| 71 | +- Error return traces. |
| 72 | +- Some way to universally hook into all error reporting points for consistent error reporting. |
| 73 | +- Better handling of error enums |
| 74 | +- Guidance on FFI error handling. |
| 75 | +- Ways of recovering from recoverable errors. |
| 76 | + - enum-convergance as errors propagate up the stack |
0 commit comments