rusty-pv 0.1.0

Pipe viewer — a Rust port of Andrew Wood's `pv(1)` with progress bar, ETA, rate display, token-bucket rate limiting, IEC/SI unit math, SIGWINCH-aware terminal redraw, SIGUSR1 size refresh, multi-instance cursor coordination, and a typed library API.
Documentation
# Compatibility — rusty-pv vs upstream `pv(1)` v1.10.5

This document enumerates every flag and behavior with Default-mode and Strict-mode rows. Populated during Polish phase. For the v0.1.0 release.

## Flag Surface

| Flag | Upstream | rusty-pv Default | rusty-pv Strict |
|---|---|---|---|
| `-p` / `--progress` ||||
| `-t` / `--timer` ||||
| `-e` / `--eta` ||||
| `-I` / `--fineta` ||||
| `-r` / `--rate` ||||
| `-b` / `--bytes` ||||
| `-a` / `--average-rate` ||||
| `-n` / `--numeric` ||||
| `-q` / `--quiet` ||||
| `-W` / `--wait` ||||
| `-D SEC` / `--delay-start` ||||
| `-i SEC` / `--interval` ||||
| `-N NAME` / `--name` ||||
| `-f` / `--force` ||||
| `-w WIDTH` / `--width` ||||
| `-H HEIGHT` / `--height` ||||
| `-l` / `--line-mode` ||||
| `-0` / `--null-mode` ||||
| `-L RATE` / `--rate-limit` ||||
| `-B BYTES` / `--buffer-size` ||||
| `-E` / `--skip-errors` ||||
| `-s SIZE` / `--size` ||||
| `--si` ||||
| `-c` / `--cursor` (Unix) ||||
| `-c` on Windows | n/a | stderr diagnostic + fallback | same |
| `-F FORMAT` (custom format) || ✗ (deferred to v0.2.0) ||
| `-T` buffer-% ||||
| `-A NUM` peek-window ||||
| `--bits` ||||
| `--remote PID` / `--query PID` ||||
| SIGUSR2 (deprecated) ||||
| `completions <shell>` subcommand || ✓ (Default-mode only) | ✗ (treated as unparseable positional) |

## Behavioral Divergences

### Default-mode (BREAKING-CHANGE)

- Conflicting flag pairs (e.g., `-L 1M -L 5M`) — Default rejects at parse time via clap. Strict uses last-wins (matches upstream).

### Stream policy

- Display lines → STDERR (matches upstream)
- Data → STDOUT (matches upstream)

### EMA α

- Locked at α = 0.3 (matches upstream). Not user-configurable in v0.1.0.

### SIGPIPE

- Default SIGPIPE handler is restored before the copy loop → process dies on SIGPIPE → exit 141 on Unix (matches upstream). Windows: ERROR_BROKEN_PIPE → exit 1.

### Library API

- `Pv`, `PvBuilder`, `Reporter` (Send-only), `Progress` (`#[non_exhaustive]`), `PvError` (`#[non_exhaustive]`). `default-features = false` strips all CLI deps.