# Releasing

## Prerequisites

1. Add `CARGO_REGISTRY_TOKEN` to GitHub repo secrets:
   - Get token from https://crates.io/settings/tokens
   - Add to repo: Settings → Secrets → Actions → New secret

## Release Process

```bash
# 1. Update version in Cargo.toml
vim Cargo.toml  # Change version = "0.1.0" to "0.2.0" etc.

# 2. Commit the version bump
git add Cargo.toml
git commit -m "Release v0.2.0"

# 3. Create and push tag
git tag v0.2.0
git push origin main
git push origin v0.2.0
```

GitHub Actions will automatically:
- Build binaries for 6 platforms (Linux, macOS, Windows)
- Create GitHub Release with downloadable binaries
- Publish to crates.io
- Build and publish Python wheels to PyPI

## Benchmark Baselines

To maintain performance across releases, capture a baseline for major versions:

```bash
# Capture v0.5 baseline
cargo bench --save-baseline v0.5
```

CI will store these baselines as artifacts to compare performance in future PRs.

## Installation Methods

After release, users can install via:

```bash
# Python (PyPI)
pip install nanobook

# Rust (crates.io - compiles from source)
cargo install nanobook
```
