2019-05-22 - Version 1.9
        - Don't include netdriver if not needed
        - Updated examples (bind/openssl)
        - Add missing TEMP_FAILURE_RETRY() wrappers
        - Add additional _HF_STATE_DYNAMIC_SWITCH_TO_MAIN state

2019-02-23 - Version 1.8
        - Native support for NetBSD
		- Multiple smaller changes wrt threading - e.g. introducing the signal thread
		- Removed the support for -p (pid fuzzing), honggfuzz net driver, or persistent fuzzing mode should be used instead
		- Reimplementation of memory comparison routines, now verified with glibc's test-suite
		- Improved hfuzz-cc/clang/gcc - e.g. for the MacOSX platform, also using -fno-sanitize=fuzzer if -fsanitize=fuzzer is specified, + some samba code wrappers
		- Examples: new corpora for some of those, new patch for ISC Bind (9.13.5)

2018-08-23 - Version 1.7
        - Native support for NetBSD
        - ASCII only fuzzing
        - Updated corpora for ISC Bind
        - Printing final stats upon exit
        - Refreshed support for Intel PT
        - Support for __sanitizer_cov_trace_div
        - Updated fuzzing examples for OpenSSL

2018-04-19 - Version 1.6 (rev aeaad48)
        - Fixed Dockerfile
        - Fixed a few format problems with file reporting
        - Updated display formatting
        - Make it work under WSL (Windows Subsystem for Linux)

2018-02-22 - Version 1.5 (rev 3b1b70b)
        - Persistent fuzzing now works with MacOS-X
        - Fixed some examples/ to make it work with MacOS-X
        - Should compile cleanly with newer MacOS-X versions

2018-02-07 - Version 1.4 (rev 28c7d9e)
        - Socketfuzzer by @dobin
        - TCP fuzzer (HonggFuzzer NetDriver) in libhfnetdriver
        - Display: changed layout a bit
        - Fix some compilation isuses for MacOS-X
        - Make it compile with OpenBSD
        - Better examples/ dir: Apache HTTP, ISC Bind
        - Added persistent and netdriver signatures
        - Added missing symbols for newer -fsanitize-coverage (const)
        - Changed internal structures (global vs run)
        - Android: Make it compile with newer SDKs

2017-12-09 - Version 1.3 (rev dd9f149)
        - Software instrumentation - support for cmp_const __sanitizer_cov_trace_const funcs
        - Refreshed (mostly) OpenSSL corpora
        - Mangling: additional function for ASCII numbers
        - Support for RLIMIT_DATA limiting
        - Better UI scrolling
        - Simplified Intel PT decoder
        - Removed defer{} / fblocks from libhfuzz
        - Google-style intendation with clang-format
        - Faster locks over global corpora of files

2017-11-01 - Version 1.2 (rev 8e04633)
        - Software-based coverage feedback (-z) is now enabled by default, can be disabled with (-x)
        - Better sigprocmask manipulation before executing a process
        - Updated fuzzing corpora for ssl packages
        - Updated Apache HTTPD compilation script/patch, corpora, config and string instrumentation
        - Updated ISC Bind config and fuzzing corpora
        - Fixes for the Android build (thanks to Zach Riggle and Anestis Bechtsoudis)
        - Indentation fixes, now clang-format is used

2017-06-23 - Version 1.1 (rev ee3a530)
        - Simplified and improved hfuzz_cc compiler
        - More string instrumentation in libhfuzz
        - Android: works with Android-NDK 15 and newer only
        - Dockerfile
        - Refreshed docs
        - Linux: Faster BTS/PT due to less PMU state resets
        - Linux: tests and by-pass for the Linux' fork-when-multithreaded problem
        - libFuzzer/AFL style dictionaries
        - Runnable under docker/oss-fuzz

2017-05-23 - Version 1.0 (rev 4332ae9)
        - Multiple stability improvements for most of the supported architectures
        - More examples in examples/ (e.g. Linux kernel IP for BTS/PT)
        - Documentation updates
        - Added honggfuzz compiler wrapper in hfuzz_cc/
        - Reworked buffer mangling logic

2016-02-14 - Version 0.9 (rev b0d1118)
        - Clang >= 4.0 -fsanitize-coverage=trace-pc-guard,indirect-calls,trace-cmp support
        - Multiple examples in examples/
        - --pprocess_cmd for input post-processing

2016-09-01 - Version 0.8 (rev 6b9efac)
        - Clang >= 4.0 -fsanitize-coverage=trace-pc,indirect-calls,trace-cmp support
        - GCC/Clang -finstrument-functions support
        - Persistent fuzzing mode (-P) for Linux and POSIX
        - Mutiple smaller fixes (display, stability)

2016-03-15 - Version 0.7 (rev 6d01e82)
        - Asan code-coverage (SANCOV) available for all platforms (incl. Windows)
        - Support for Intel PT under Linux v4.0 and newer (and Broadwell/Skylake/newer Intel CPUs)
        - Should work under: Linux, FreeBSD, Mac OS X, Windows/Cygwin, possibly other POSIX-compliant systems

2015-08-14 - Version 0.6 (rev aa61adb)
        - Improvements to feedback-driven fuzzing. Using bloom-style filter to record branches (much faster).
        - Using multiple hardware-assisted feedback signals at once.
        - Multiple small things: usage notes, logging

2015-02-26 - Version 0.5 (revision 284)
        - Feedback-driven fuzzing on Linux (using Intel's BTS with Linux perf infrastructure for branch counting) (-Dp option)
        - Compiles cleanly and works under FreeBSD 10.1
        - Uses libbfd/libunwind (under Linux) to disassemble offending instructions
        - Many smaller fixes

2015-02-01 - Version 0.4 (revision 72)
        - Switch from udis86 to capstone (Capstone is available in many Linux distros as opposed to udis86)
        - OSX 10.10 support
        - Many smaller fixes (esp. for MacOS)

2011-07-02 - Version 0.3 (revision 37)
        - Honggfuzz now allows attaching to an external process (-p) (Linux only)
        - -f no longer required when -c (external command) is specified
        - Smaller fixes (typos)

2011-06-02 - Version 0.2 (revision 26)
        - MacOS fixes (parsing DiagnosticReports) - solves http://code.google.com/p/honggfuzz/issues/detail?id=2
        - getopt() returns 'int' and not 'char' (could hang the process in a forever-loop)
        - Formatting changes
        - Updated comments/usage

2010-12-13 - Initial release 0.1 (revision 13)
