---
# System prepended metadata

title: Libs Meeting 2021-04-28
tags: [Minutes, Libs Meetings]

---

# Libs Meeting 2021-04-28

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

**Attendees**: ...

## Agenda

- [Open action items](https://hackmd.io/ovrbJj6CRduRgSA0Wzg2zg)
- [#84266](https://github.com/rust-lang/rust/pull/84266) - ***WIP: alloc: Add default Cargo feature "global\-oom\-handling"***
  - Discuss the problem motivating this work (falliable allocation, for the Linux kernel and other usage)
  - Discuss potential solutions to that problem, and steps in those solutions (e.g. adding more `try_` functions)
  - Discuss stabilization of `try_reserve`, and what the error should look like (opaque?)
- Discuss `Termination` trait underlying type (and how other types should be converted to it to preserve information)
- Triage
- Anything else?

## Triage

### Nominated

- [0 `rust-lang/rfcs` items](https://github.com/rust-lang/rfcs/issues?q=is%3Aopen+label%3AT-libs+label%3AI-nominated)
- [1 `rust-lang/rust` items](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AT-libs+label%3AI-nominated)
  - [#84266](https://github.com/rust-lang/rust/pull/84266) - see above


### 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)
- [2 `rust-lang/rust` items](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AT-libs+label%3AS-waiting-on-team)
  - [[76901](https://github.com/rust-lang/rust/pull/76901)] *Implement RFC 2500 Needle API (Part 1)*
  - [[81642](https://github.com/rust-lang/rust/pull/81642)] *Allow deriving Into for primitive enums*

### Needs decision

- [7 `rust-lang/rust` items](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AT-libs+label%3AI-needs-decision)
  - [[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*
  - [[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.*
  - [[62726](https://github.com/rust-lang/rust/issues/62726)] *Tracking issue for io\_slice\_advance*

## Actions

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

## Notes

- Rust's (std's) OOM handling is not great. Just panics/aborts. Now with no_std, rust for linux, etc. this is becoming more important.
- OOM panic is similar to env::args() panic, or thread::spawn() panic - it doesn't panic because you failed to uphold some precondition, but instead because something happened that most* rust users dont' care about
- two separate issues: 1. do we want try_* alternatives for all these things, 2. do we want a way to *disable* the panicking versions
- special attribute for this type of panic?
  - could be useful for both documentation and a lint
  - very similar to this 'portability lint' idea
- name: 'convenience panic' ?
- `try_` always meaning 'try to allocate' might not be great. there are other (potential) usages.
- maybe we don't even want `try_push` but a two-step `let x = try_reserve(..)?;` and `x.push(..)` where the latter does not try to allocate?
- If we introduce separate types (`VecFallible`, `HashMapFallible`, needs much better naming), we can use the same name for every method (`VecFallible::push` would return `Result`, `Vec::push` is `self.inner.push(...).unwrap()` or equivalent).