# Release Checklist
Yanking shouldn't be the default.

## Safety Checklist
1. No `unsafe`
1. Everything builds, not only `cargo test`
1. Builds with `--release` flag
1. All tests pass, all benchmarks run
1. All tests pass, including `#[ignore]` tests and fuzzing!
1. Images produced by running the examples can be opened in other software
1. Only safe `as` casts
1. Always have a max limit when allocating based on file contents
    - limit max capacity `Vec::with_capacity( x.min(1024) )`
    - careful with `vec![ 0; x ]`
1. Only unreachable `unwrap()`, `expect("")` and `assert`s
1. No `println!` outside of tests and examples
1. `assert_eq` and `debug_assert_eq` should have a message explaining the context, except in internal algorithms like compressors
1. ensure `#![warn(missing_docs)]` in `lib.rs`
1. Example in README.md should be up-to-date
1. GUIDE.md should be up-to-date
1. Update Dependencies while you're at it?

## Tasks
1. Bump version in
    - `cargo.toml`
    - `README.md`
    - `examples/README.md`
    - `CHANGELOG.md`
    
1. Run `cargo publish`

1. Run `cd exrs-wasm && npm run publish`
    