oxidelta 0.1.4

VCDIFF (RFC 3284) delta encoder/decoder — Rust reimplementation of xdelta3
Documentation
# Oxidelta

High-performance VCDIFF (RFC 3284) delta encoding/decoding in Rust.

`oxidelta` targets interoperability with xdelta3 at the file format level, while providing a Rust-native library API and an idiomatic CLI.

## Quick Start

### Install

```bash
cargo install --locked oxidelta
```

Alternative (prebuilt binary, faster install):

```bash
cargo binstall oxidelta
```

Manual binary install:

1. Download your platform archive from GitHub Releases.
2. Extract it and place `oxidelta` on your `PATH`.

Package manager note:

- Homebrew/Scoop/apt/rpm distribution is supported by the release pipeline artifacts.
- If you maintain internal package repos, consume release tarballs and checksums from releases.

### Encode

```bash
oxidelta encode --source old.bin new.bin patch.vcdiff
```

### Decode

```bash
oxidelta decode --source old.bin patch.vcdiff restored.bin
```

### Inspect a patch

```bash
oxidelta header patch.vcdiff
oxidelta headers patch.vcdiff
oxidelta delta patch.vcdiff
```

## CLI Highlights

- Subcommand-first CLI: `encode`, `decode`, `config`, `header`, `headers`, `delta`, `recode`, `merge`
- Tunables:
  - `--level 0..9`
  - `--window-size`
  - `--source-window-size`
  - `--duplicate-window-size`
  - `--instruction-buffer-size`
  - `--secondary {none,lzma,zlib,djw,fgk}`
- Output controls:
  - `--stdout`
  - `--check-only`
  - `--json`
  - global `--force`, `--quiet`, `--verbose`

## Library Usage

```rust
use oxidelta::compress::encoder::{self, CompressOptions};
use oxidelta::compress::decoder;

fn main() {
    let source = b"hello old world";
    let target = b"hello new world";

    let mut delta = Vec::new();
    encoder::encode_all(&mut delta, source, target, CompressOptions::default()).unwrap();

    let decoded = decoder::decode_all(source, &delta).unwrap();
    assert_eq!(decoded, target);
}
```

More examples:
- `examples/basic_encode_decode.rs`
- `examples/library_usage.rs`
- `examples/custom_backend.rs`
- `examples/integration_pipeline.rs`

## Documentation

- Architecture: `ARCHITECTURE.md`
- Performance and benchmark methodology: `PERFORMANCE.md`
- Compatibility matrix and differences: `COMPATIBILITY.md`
- Migration guide from xdelta CLI workflows: `MIGRATION.md`

API docs:

```bash
cargo doc --all-features --no-deps --open
```

Hosted docs are intended at: <https://docs.rs/oxidelta>

## Release and Binaries

Automated release pipelines build and publish binaries for:

- Linux: `x86_64-unknown-linux-gnu`, `aarch64-unknown-linux-gnu`
- macOS: `x86_64-apple-darwin`, `aarch64-apple-darwin`
- Windows: `x86_64-pc-windows-msvc`, `aarch64-pc-windows-msvc`

See `.github/workflows/release.yml` for details.

For crates.io publishing, configure repository secret `CARGO_REGISTRY_TOKEN` (an API token with publish permissions).

## Status

Production hardening is ongoing. The project is already heavily tested (unit, integration, property tests, cross-interop tests against xdelta3), and release/benchmark workflows are in place.