jdupes 1.14.0

- Long option --exclude is deprecated and renamed --extfilter
- BTRFS compile options have been generalized to dedupe (see README)
- Fix a bug in 1.13.3 where many options caused an inappropriate exit

jdupes 1.13.3

- Fix the behavior of the -I/--isolate option
- Move BTRFS-specific dedupe interfaces to general Linux 4.5+ interfaces
- Change BTRFS compilation flag name (see README)
- Fix FS dedupe only working on the first 16 MiB of files
- Add FS dedupe static header for when this header is mising
- Add EXE version info for generated Windows executables
- Correct several copyright dates and comments

jdupes 1.13.2

- Fix Unicode and escaped in JSON output

jdupes 1.13.1

- Fix an incorrect NULL pointer check

jdupes 1.13

- Add new option -j/--json for JSON (machine-readable) output
- /usr/local is now the default PREFIX in Makefile
- Minor performance optimizations
- A few minor bug fixes

jdupes 1.12

- Small reductions in memory usage
- Add "standalone" jdupes C file which has no external requirements
- Add ability to toggle -Z with a USR1 signal (not available on Windows)
- Add -t/-no-tocttou option to disable file change safety checks

jdupes 1.11.1

- Disable build date embedding by default to make reproducible builds easier

jdupes 1.11

- Add new option -T for partial hash matches only (dangerous!)
- Fix '-P partial' printing

jdupes 1.10.4

- Fix a bug that caused -x/--xsize to fail randomly

jdupes 1.10.3

- Add -M/--printwithsummary option
- Add -0/--printnull option
- Add very long path support on Windows 10
- Do not output progress indicators if output is not a TTY
- Remove an old undocumented long option '--summary'

jdupes 1.10.2

- Add -P/--print option

jdupes 1.10.1

- Fix -I option

jdupes 1.10

- cacheinfo code not included on Windows where it is not used
- Fix -H to work properly on individual files (not just directories)
- Fix memory corruption which causes a crash when using -A option
- Block btrfs dedupe on Linux kernels < 3.0 due to possible data loss bugs
- Removed all references to 'fdupes-jody' and unused TODO file
- Add -C/--chunksize option for tuning I/O chunk size (see README)
- Make more features configurable and exclude them in LOW_MEMORY mode
- Remove HAVE_BTRFS_IOCTL_H deprecated compile-time option
- Remove experimental tree rebalance code

jdupes 1.9

- stderr on Windows is no longer polluted or empty when redirected
- Added -1/--one-file-system to restrict recursion to the same filesystem
- Added a universal exclusion stack which is currently only used for -X
- Added -X/--exclude to use exclusion stack; supersedes -x/--xsize
- More robust BTRFS enablement behavior in Makefile
- Fixed Unicode display for hard linking on Windows
- Efficiency improvements to internal memory allocator (string_malloc)
- Documentation improvements and updates
- Provide "fdupes_oneline.sh" which emulates old "fdupes -1" feature
- Single file names passed as arguments are now accepted and processed

jdupes 1.8

- All files are now licensed under The MIT License exclusively
- Fixed a serious memory alloc bug; upgrading is *strongly* recommended
- Several huge improvements to progress indicators
- Fix some error message display problems and add more error checking
- Fixes for several potential crashes and buffer overflows
- Indicate no duplicates were found if printing matches and none exist
- On Linux, jdupes now auto-tunes I/O size based on CPU L1 D-cache size
- The -v switch now also shows info about bitness in the version string

jdupes 1.7

- Incompatible change: zero-length files no longer duplicates by default
- New -z/--zeromatch option to consider zero-length files as duplicates
- I/O chunk size changed for better performance
- The PROGRAM_NAME variable is now used properly during make
- Program was re-organized into several split C files

jdupes 1.6.2

- Fix: version number shown in jdupes -v wasn't updated in 1.6.1
- Prevent BTRFS dedupe of more files than the kernel can handle
- Track directories to avoid scanning the same directory twice

jdupes 1.6.1

- Show backslash instead of forward slash as path separator on Windows
- Make BTRFS dedupe error messages more informative and less confusing
- Minor code tweaks, typo and help text fixes
- Split some functions into separate files (jdupes.c was getting large)

jdupes 1.6

- Add the -l/--linksoft option to create symbolic links from duplicates
- Disable following symlinks to directories when -s/--symlinks is used
- Reduce overall memory usage by approximately 5%
- Add configurable path buffer sizes and path buffer overflow checks
- Fixes for some build warnings seen on ARM and MIPS

jdupes 1.5.1

- Significant reduction in memory usage (with a bonus tiny speed boost)
- Improvements in string_malloc memory allocator code
- Bug fixes for output formatting inconsistencies
- Major BTRFS dedupe compilation and functionality fixes
- LOW_MEMORY compile option added for more size/speed tradeoff control

jdupes 1.5

- Invert -Z option: only "soft abort" if asked explicitly to do so
- Tweak internal data chunk size to reduce data cache misses
- Fix partial hash optimization
- Change PREFIX for building from /usr/local back to /usr

jdupes 1.4

- Add support for Unicode file paths on Windows platforms
- Discard floating point code of dubious value
- Remove -1/--sameline feature which is not practically useful
- Process partially complete duplicate scan if CTRL+C is pressed
- Add -Z/--hardabort option to disable the new CTRL+C behavior
- Add [n]one option to -d/--delete to discard all files in a match set
- Minor bug fixes and tweaks to improve behavior

jdupes 1.3

- Add -i/--reverse to invert the match sort order
- Add -I/--isolate to force cross-parameter matching
- Add "loud" debugging messages (-@ switch, build with 'make LOUD=1')

jdupes 1.2.1

- Fix a serious bug that caused some duplicates to be missed

jdupes 1.2

- Change I/O block size for improved performance
- Improved progress indicator behavior with large files; now the progress
  indicator will update more frequently when full file reads are needed
- Windows read speed boost with _O_SEQUENTIAL file flag
- Experimental tree rebalance code tuning

jdupes 1.1.1

- Fix a bug where the -r switch was always on even if not specified

jdupes 1.1

- Work around the 1023-link limit for Windows hard linking so that linking
  can continue even when the limit is reached
- Update documentation to include hard link arrow explanations
- Add "time of check to time of use" checks immediately prior to taking
  actions on files so that files which changed since being checked will not
  be touched, avoiding potential data loss on "live" data sets
- Add debug stats for files skipped due to Windows hard link limit
- Change default sort to filename instead of modification time
- Replaced Windows "get inode number" code with simpler, faster version
- Fixed a bug where an extra newline was at the end of printed matches
- Reduced progress delay interval; it was a bit slow on many large files

jdupes 1.0.2

- Update jody_hash code to latest version
- Change string_malloc to enable future string_free() improvements
- Add string_malloc counters for debug stat mode
- Add '+size' option to -x/--xsize switch to exclude files larger than the
  specified size instead of smaller than that size

jdupes 1.0.1

- Fix bug in deletion set counter that would show e.g. "Set 1 of 0"
- Minor size reductions by merging repeated fixed strings
- Add feature flag 'fastmath' to show when compiled with -ffast-math
- Corrections to code driven by -Wconversion and -Wwrite-strings


jdupes 1.0

First release. For changes before the 'jdupes' name change, see OLD_CHANGES
