See GitHub Milestones for detailed issue tracking.
- Core AST data structures with comprehensive serialization
- Magic file parser for text format with hierarchical rules
- Rule evaluation engine with confidence scoring
- Memory-mapped file I/O with FileBuffer
- Text and JSON output formatters
- CLI with multiple file support, stdin,
--json, and--magic-file - Built-in fallback rules with build-time compilation
- Strength calculation and
!:strengthparsing - Comprehensive error handling, rustdoc, and mdbook documentation
- High test coverage across 1,200+ tests
- Split evaluator module into focused submodules (#59)
- Disambiguate
MatchResulttypes (#60) - Extract CLI tests into integration tests (#61)
- Pre-create evaluator submodules for new features (#62)
- Comparison operators:
>,<,>=,<=(#34) - Bitwise XOR, NOT, and any-value operators (#35)
- Indirect offset resolution (#37)
- Relative offset resolution (#38)
- Quad (64-bit integer) type (#36)
- Convert
evaluator/types.rsto directory module (#63) - Regex and search types (#39)
- Float and double types (#40)
- Date and timestamp types (#41)
- Pascal string type (#43)
- Meta-types: default, clear, name, use, indirect, offset (#42)
- Builder pattern for
MagicDatabase(#45) - JSON output metadata (#46)
- Parse warnings for skipped rules (#47)
- Improved error messages (#49)
- Partial results on timeout (#44)
- 95%+ compatibility with GNU
file(#48, #57) - Stable API with semver guarantees
- Migration guide from C libmagic
- Performance parity validation
- crates.io publication
The following are explicitly out of scope for this project:
- Binary
.mgccompilation: 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.soABI - 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