libmagic-rs 0.3.2

A pure-Rust implementation of libmagic for file type identification
Documentation
# Roadmap

See [GitHub Milestones](https://github.com/EvilBit-Labs/libmagic-rs/milestones) for detailed issue tracking.

## v0.1.0 - MVP (Current)

- [x] Core AST data structures with comprehensive serialization
- [x] Magic file parser for text format with hierarchical rules
- [x] Rule evaluation engine with confidence scoring
- [x] Memory-mapped file I/O with FileBuffer
- [x] Text and JSON output formatters
- [x] CLI with multiple file support, stdin, `--json`, and `--magic-file`
- [x] Built-in fallback rules with build-time compilation
- [x] Strength calculation and `!:strength` parsing
- [x] Comprehensive error handling, rustdoc, and mdbook documentation
- [x] High test coverage across 1,058+ tests

## v0.2.0 - Core Primitives

- [ ] Split evaluator module into focused submodules ([#59]https://github.com/EvilBit-Labs/libmagic-rs/issues/59)
- [ ] Disambiguate `MatchResult` types ([#60]https://github.com/EvilBit-Labs/libmagic-rs/issues/60)
- [ ] Extract CLI tests into integration tests ([#61]https://github.com/EvilBit-Labs/libmagic-rs/issues/61)
- [ ] Pre-create evaluator submodules for new features ([#62]https://github.com/EvilBit-Labs/libmagic-rs/issues/62)
- [ ] Comparison operators: `>`, `<`, `>=`, `<=` ([#34]https://github.com/EvilBit-Labs/libmagic-rs/issues/34)
- [ ] Bitwise XOR, NOT, and any-value operators ([#35]https://github.com/EvilBit-Labs/libmagic-rs/issues/35)
- [ ] Indirect offset resolution ([#37]https://github.com/EvilBit-Labs/libmagic-rs/issues/37)
- [ ] Relative offset resolution ([#38]https://github.com/EvilBit-Labs/libmagic-rs/issues/38)
- [x] Quad (64-bit integer) type ([#36]https://github.com/EvilBit-Labs/libmagic-rs/issues/36)

## v0.3.0 - Advanced Features

- [ ] Convert `evaluator/types.rs` to directory module ([#63]https://github.com/EvilBit-Labs/libmagic-rs/issues/63)
- [ ] Regex and search types ([#39]https://github.com/EvilBit-Labs/libmagic-rs/issues/39)
- [ ] Float and double types ([#40]https://github.com/EvilBit-Labs/libmagic-rs/issues/40)
- [ ] Date and timestamp types ([#41]https://github.com/EvilBit-Labs/libmagic-rs/issues/41)
- [ ] Pascal string type ([#43]https://github.com/EvilBit-Labs/libmagic-rs/issues/43)
- [ ] Meta-types: default, clear, name, use, indirect ([#42]https://github.com/EvilBit-Labs/libmagic-rs/issues/42)

## v0.4.0 - API and UX Polish

- [ ] Builder pattern for `MagicDatabase` ([#45]https://github.com/EvilBit-Labs/libmagic-rs/issues/45)
- [ ] JSON output metadata ([#46]https://github.com/EvilBit-Labs/libmagic-rs/issues/46)
- [ ] Parse warnings for skipped rules ([#47]https://github.com/EvilBit-Labs/libmagic-rs/issues/47)
- [ ] Improved error messages ([#49]https://github.com/EvilBit-Labs/libmagic-rs/issues/49)
- [ ] Partial results on timeout ([#44]https://github.com/EvilBit-Labs/libmagic-rs/issues/44)

## v1.0.0 - Production Ready

- [ ] 95%+ compatibility with GNU `file` ([#48]https://github.com/EvilBit-Labs/libmagic-rs/issues/48, [#57]https://github.com/EvilBit-Labs/libmagic-rs/issues/57)
- [ ] Stable API with semver guarantees
- [ ] Migration guide from C libmagic
- [ ] Performance parity validation
- [ ] crates.io publication

## Non-Goals

The following are explicitly out of scope for this project:

- **Binary `.mgc` compilation**: We follow the OpenBSD approach of using text magic files directly, not the compiled binary format
- **Drop-in C ABI replacement**: This is a Rust-native library, not a C-compatible shared library with `libmagic.so` ABI
- **MIME database management**: We detect file types via magic rules, not by maintaining a MIME type registry
- **File modification or conversion**: This is a read-only detection tool
- **Network protocol detection**: We identify file contents, not network traffic