arcweight 0.3.0

A high-performance, modular library for weighted finite state transducers with comprehensive examples and benchmarks
Documentation
# Scripts Directory

This directory contains utility scripts for development and CI processes.

## ci-check.sh

A comprehensive script that simulates the exact same checks run by our GitHub CI pipeline. This helps catch issues locally before pushing to GitHub.

### Usage

```bash
# From the project root
./scripts/ci-check.sh

# Start at a specific step (useful for resuming after fixing an issue)
./scripts/ci-check.sh --start-at 5
./scripts/ci-check.sh -s 10
```

### What it checks

The script runs 19 comprehensive checks:

| Step | Check | Description |
|------|-------|-------------|
| 1 | Unit tests (all features) | Full test suite with all features enabled |
| 2 | Unit tests (no default features) | Tests without default features |
| 3 | Unit tests (parallel only) | Tests with only `parallel` feature |
| 4 | Unit tests (serde only) | Tests with only `serde` feature |
| 5 | Doc tests | Documentation examples compile and run |
| 6 | Clippy (all features) | Linting with all features |
| 7 | Clippy (no default features) | Linting without default features |
| 8 | Code formatting | `rustfmt` check |
| 9 | Documentation build | Compile docs with `-D warnings` |
| 10 | Benchmark compilation | Ensure benchmarks compile |
| 11 | Example programs | Run all example programs |
| 12 | MSRV compatibility | Check against Rust 1.85 (minimum supported) |
| 13 | Security audit | `cargo-audit` vulnerability check (optional) |
| 14 | Outdated dependencies | `cargo-outdated` check (optional) |
| 15 | Python dev dependencies | Install pytest and maturin |
| 16 | Python bindings build | Build PyO3 bindings with maturin |
| 17 | Python bindings install | Install bindings for testing |
| 18 | Python tests | Run pytest on `pyo3-bindings/tests/` |
| 19 | Coverage report | Generate lcov coverage (optional) |

### Prerequisites

**Required:**
- Rust toolchain (1.85+) with `clippy` and `rustfmt` components
- Python 3.8+ with pip

**Optional (for full CI simulation):**
- `cargo-audit` - Security vulnerability scanning
- `cargo-outdated` - Dependency freshness checking
- `cargo-llvm-cov` - Code coverage generation

Install optional tools:
```bash
cargo install cargo-audit cargo-outdated cargo-llvm-cov
rustup component add llvm-tools-preview
```

### Exit behavior

The script exits immediately on the first error encountered, helping you identify and fix issues quickly. Optional checks (security audit, outdated deps, coverage) emit warnings but don't fail the build.

### Recommended workflow

Run this script before committing changes to ensure your code will pass CI:

```bash
# Make changes
git add .
./scripts/ci-check.sh  # Ensure everything passes
git commit -m "Your commit message"
git push
```

### Resuming after failures

If a step fails, fix the issue and resume from that step:

```bash
# Step 6 (clippy) failed
# ... fix the linting issue ...
./scripts/ci-check.sh --start-at 6  # Resume from step 6
```

This prevents re-running expensive earlier steps (tests, benchmarks) when iterating on fixes.