All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
2.3.0 - 2024-05-29
- Crash result simplification (#30)
- Configurable simplification steps (#54)
- Parallel simplification (#53)
- Terminate fuzzer workers in atexit() handler
- Subcommand to prune invalid crashes (#52)
- Introduce subcommands for fuzzing, result display and simplification
- Code examples in README (#48)
2.2.0 - 2024-03-19
- Catch and report internal worker errors
- Implement adaptive random fuzzing parameter selection (#24)
- Splicing mutation (#23)
- Detect ignored exceptions (#43)
- Missing --state-file parameter (#15)
- Keyboard interrupts are handled gracefully now
- Report full exception backtrace when error was found
2.1.1 - 2024-02-12
- Saving fuzzer state to file (#15)
- Loading crash coverage from crash dir on startup (#25)
2.1.0 - 2024-02-10
- Python 3.8 support
- Support for "spawn" and "forkserver" start methods
- Potential deadlocks due to use of "fork" start method
- Fixed artifact name (#27)
2.0.0 - 2024-02-05
- Parallel fuzzing (#11)
- Global timeout (#14)
- Support for code coverage and fuzzing at the same time
- Use cryptographic randomness (#16)
- Regression mode
- Prevent tracer from being replaced by secondary tracer
- Continue after error was found, make number of errors configurable (#12)
- Make crash dir configurable (#13)
- Use mp.get_context for multiprocessing (#1)
- Report only crashes for new paths (#19)
- Use flags instead of file descriptor mask to close stdout and stderr
- Make logging frequency configurable via --stat-frequency
- Memory limit checking
- Per-run timeout
1.0.12 - 2024-01-24
- Mark package as py.typed (#9)
1.0.11 - 2024-01-18
- Migrate to pytest
- Upgrade dependencies
- Introduce checks (ruff, black, kacl)
- Introduce type hints and mypy checks
- Rename to cobrafuzz
- Enable GitHub CI