# Notes for developers
## Build, test, and release
- Review changelog to ensure nothing important has been omitted
- Update version in `Cargo.toml`
- Update the changelog version (add a new release header below the `Unreleased` header)
- Update the version variable `BM_VER` in `fetch-and-run.sh`
- Run `./build-releases.sh` to produce binaries in `target/artifacts/`.
- Do any manual testing
- Commit version change
- `cargo publish`
- `git tag -a vX.Y.Z -m X.Y.Z`
- `git push && git push --tags`
- Cut a new release on Codeberg:
- Name the release X.Y.Z (no `v` prefix)
- Attach binaries from `target/artifacts/` to the release
- Hide auto-generated archives
- Test the release by running `./fetch-and-run.sh`
## Manual testing
Some interesting things to enter:
- `(yes "out" | head -n20)& (yes " err" | head -n20 >&2)` to show interleaving of stdout and stderr
- `echo start; sleep 10; echo stop` to experiment with blocking commands
- `while true; do date; sleep 0.001; done` for a rapid output stream (not as fast as `yes`)