diffo 0.2.0

Semantic diffing for Rust structs via serde
Documentation
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.2.0] - 2025-10-11

### Added
- Multiple sequence diff algorithms: `IndexBased`, `Myers`, and `Patience`
- Per-path algorithm configuration via `DiffConfig::sequence_algorithm()`
- Default algorithm configuration via `DiffConfig::default_sequence_algorithm()`
- Custom comparator functions per path via `DiffConfig::comparator()`
- `ValueExt` trait for convenient value access methods
- `apply()` function to apply diffs and reconstruct values
- Support for undo/redo operations through diff application
- `Path::last_index()` method for extracting array indices

### Changed
- Improved README with clearer use cases and examples
- Optimized path construction with pre-allocated strings
- Optimized `hex_preview()` to avoid intermediate allocations
- Optimized map diffing to eliminate intermediate collections
- Optimized array change sorting with numeric index comparison
- Reduced `diff_values()` function complexity with helper functions and macros

### Performance
- ~15-25% improvement in diff computation through targeted optimizations
- Reduced memory allocations in hot paths
- Faster string operations in path construction

## [0.1.1] - 2025-10-10

### Added
- Initial public release
- Core diff functionality for any `Serialize` type
- Path-based change tracking
- Multiple output formatters: pretty, JSON, JSON Patch (RFC 6902), Markdown
- Secret masking via `DiffConfig::mask()`
- Float tolerance configuration
- Collection size limits
- Max depth configuration
- Ignore paths configuration

[0.2.0]: https://github.com/PiotrGrzybowski/diffo/compare/v0.1.1...v0.2.0
[0.1.1]: https://github.com/PiotrGrzybowski/diffo/releases/tag/v0.1.1