# Libs Meeting 2024-02-28
###### tags: `Libs Meetings` `Minutes`
**Meeting Link**: https://meet.jit.si/rust-libs-meeting-ujepnbwg2lzqgt6wvrndwimi
**Attendees**: ...
## Agenda
- Triage
- Anything else?
## Triage
### FCPs
1 rust-lang/rust T-libs FCPs
- merge rust.tf/115746 *Print thread ID in panic message if thread name is unknown* - (4 checkboxes left)
[joshtriplett (1)](https://rfcbot.rs/fcp/joshtriplett), [m-ou-se (1)](https://rfcbot.rs/fcp/m-ou-se), [Amanieu (1)](https://rfcbot.rs/fcp/Amanieu), [the8472 (1)](https://rfcbot.rs/fcp/the8472)
### https://github.com/rust-lang/team/pull/1347
Should be added to `people/*.toml`
Mara responded.
### (Backports) rust.tf/121646 *Fix race between block initialization and receiver disconnection*
This bug has been around for more than a year on stable.
Bug is only a memory leak. Not worth backporting.
Mara responded.
### (Nominated) rust.tf/62569 *Should Rust still ignore SIGPIPE by default?*
The 8472: This could also be a call at the start of main, if the default is 'nothing' (in an edition?).
Mara: Changing the default in an edition would mean that `cargo fix --edition` would probably need to insert the attribute or function call into all programs, even though it's irrelevant to most people.
Amanieu: four options:
1. do nothing. sigpipe will kill the process
2. ignore, and have child process inherit that ignored mode
3. ignore using an empty handler, such that a child process inherits the original setting
4. also ignore the error on write() to a broken pipe (instead of panic).
JoshT: This is only relevant for when you have a Rust fn main, not if you're a Rust library
JoshT: So you get different behaviour depending on whether Rust owns main or not
Mara: I hate the attribute. I'd much prefer some function to call at the start of main.
JoshT: If the default were to do nothing, then we could drop the attribute and people who want the other behavior could *call a function*.
Mara: Yeah. I just hate having this magic attribute as an interface into a library (std), to inject a boolean into it.
The 8472: This is a consequence of Rust having a runtime.
JoshT: In general, we should minimize what we do before main. At least avoid anything that one might want to customize.
JoshS: What do other tools/languages do?
JoshT: systemd ignores SIGPIPE for daemons it launches.
Amanieu: Go does something with sigpipe, not sure what.
The 8472: Java also does something.
Amanieu: Today's implementation in Rust sets it to ignore but remembers the original for subprocesses.
JoshS: We should reset it to what we would have inherited, before spawning processes.
JoshT: About changing the default in an edition, are there any concerns other than what mara mentioned?
Mara: It's not a big concern. Maybe it is relevant to so few programs that it's fine if we don't automatically add the attribute/call, but just print a warning or something.
Amanieu: Just changing it can cause subtle bugs, like in a rarely-printing service.
The 8472: Only if the pipe is disconnected. Which is kind of weird.
JoshT: The normal way this would happen in a server would be if the server started a subprocess, handed it a pipe, and then the subprocess exits.
The 8472: Is there a way to disable sigpipe for a single fd?
JoshT: Not for all unix.
Amanieu: I think the breaking change is unacceptable, because it is too silent.
JoshT: I think it'd suffice to put it in the edition guide.
The 8472 + Mara: For `my-rust-program | head`, this is fine. But changing the behaviour for reading from subprocesses is bad.
Mara: Should we try to ignore sigpipe only for the Command api for subprocesses? (If that's possible.)
The 8472: can signal be masked on just the current thread, before read() from child?
JoshS: The changed behaviour will surprise people.
JoshT: The status quo surprises people too.
Amanieu: Other edition changes are more loud
Mara: There have been other edition changes where if you don't do `cargo fix --edition`, the code can silently mean something slightly different (e.g. different drop order).
JoshT: We're coming up to the wire on making changes prior to the edition. Also, if we want to avoid needing the attribute, then we'd need to change the default.
The 8472: If the default is inherit, then it doesn't make sense to do this as an attribute, because it can just be a simple function call.
JoshS: Even without the default changing, we could have an API to reset back to the UNIX default.
JoshT: Right, but then you're setting it and then un-setting it, which means there's still motivation for the attribute.
Mara: There are more knobs you might want to tune about std, so I'd prefer a more generic solution than a really specific attribute like this. build-std I guess.
Mara: This attribute makes `std` more special. If we ever stabilize providing an entrypoint in your own crate, that crate would have to accept the attribute too..
Amanieu: no consensus, let's revisit later.
### (Nominated) rust.tf/108277 *std::fs::Metadata timestamp methods will panic on files with invalid timestamp nsec values*
Already discussed. Fix to be reviewed.
Josh left a comment.
### (Regressions) rust.tf/119560 *\`cargo test\` performance regression on Windows on version 1.75.0*
### (Regressions) rust.tf/53340 *Performance regression in tight loop since rust 1.25*
### (Regressions) rust.tf/112180 *assertion failed: key as usize != KEY\_SENTVAL in DragonFly BSD*
### (Regressions) rust.tf/120537 `P-high` *miri: checked\_pow: overflowing shift by 64 in \`unchecked\_shl\`*
### (Regressions) rust.tf/121606 *regression: from\_raw\_parts is ambiguous*
Closed; expected behavior when doing multiple glob imports.
## Actions
- [ ] Reply to all issues/PRs discussed in this meeting, or add them to the [open action items](https://hackmd.io/Uehlc0qUQfWfvY1swYWRgQ).
_Generated by [fully-automatic-rust-libs-team-triage-meeting-agenda-generator](https://github.com/rust-lang/libs-team/tree/main/tools/agenda-generator)_