Fd Versions Save

A simple, fast and user-friendly alternative to 'find'

v9.0.0

4 months ago

Performance

  • This release is all about performance, which has been significantly improved, both due to optimizations in the underlying ignore crate (#1429 by @tavianator), and in fd itself (#1422, #1408, #1362 by @tavianator). Benchmark results show gains of 6-8x for full traversals of smaller directories (100k files) and up to 13x for larger directories (1M files).

  • The default number of threads is now constrained to be at most 64. This should improve startup time on systems with many CPU cores. (#1203, #1410, #1412, #1431) - @tmccombs and @tavianator

  • New flushing behavior when writing output to stdout, providing better performance for TTY and non-TTY use cases, see #1452 and #1313 (@tavianator).

Features

  • Support character and block device file types, see #1213 and #1336 (@cgzones)
  • Breaking: .git/ is now ignored by default when using --hidden / -H, use --no-ignore / -I or --no-ignore-vcs to override, see #1387 and #1396 (@skoriop)

Bugfixes

  • Fix NO_COLOR support, see #1421 (@acuteenvy)

Other

  • Fixed documentation typos, see #1409 (@marcospb19)

Thanks

Special thanks to @tavianator for his incredible work on performance in the ignore crate and fd itself.

v8.7.1

6 months ago

Bugfixes

  • -1 properly conflicts with the exec family of options.
  • --max-results overrides -1
  • --quiet properly conflicts with the exec family of options. This used to be the case, but broke during the switch to clap-derive
  • --changed-within now accepts a space as well as a "T" as the separator between date and time (due to update of chrono dependency)

Other

  • Many dependencies were updated
  • Some documentation was updated and fixed

v8.7.0

1 year ago

Features

  • Add flag --no-require-git to always respect gitignore files, see #1216 (@vegerot)

Bugfixes

  • Fix logic for when to use global ignore file. There was a bug where the only case where the global ignore file wasn't processed was if --no-ignore was passed, but neither --unrestricted nor --no-global-ignore-file is passed. See #1209

v8.6.0

1 year ago

Features

  • New --and <pattern> option to add additional patterns that must also be matched. See #315 and #1139 (@Uthar)
  • Added --changed-after as alias for --changed-within, to have a name consistent with --changed-before.

Changes

  • Breaking: On Unix-like systems, --type executable now additionally checks if the file is executable by the current user, see #1106 and #1169 (@ptipiak)

Bugfixes

  • Use fd instead of fd.exe for Powershell completions (when completions are generated on windows)

v8.5.3

1 year ago

Bugfixes

  • Fix completion generation to not include full path of fd command
  • Fix build error if completions feature is disabled

v8.5.2

1 year ago

Bugfixes

  • Fix --owner option value parsing, see #1163 and #1164 (@tmccombs)

v8.5.1

1 year ago

Bugfixes

  • Fix --threads/-j option value parsing, see #1160 and #1162 (@sharkdp)

v8.5.0

1 year ago

Features

  • --type executable/-t now works on Windows, see #1051 and #1061 (@tavianator)

Bugfixes

  • Fixed differences between piped / non-piped output. This changes fds behavior back to what we had before 8.3.0, i.e. there will be no leading ./ prefixes, unless --exec/-x, --exec-batch/-X, or --print0/-0 are used. --strip-cwd-prefix can be used to strip that prefix in those cases. See #1046, #1115, and #1121 (@tavianator)
  • fd could previously crash with a panic due to a race condition in Rusts standard library (see https://github.com/rust-lang/rust/issues/39364). This has been fixed by switching to a different message passing implementation, see #1060 and #1146 (@tavianator)
  • fds memory usage will not grow unboundedly on huge directory trees, see #1146 (@tavianator)
  • fd returns an error when current working directory does not exist while a search path is specified, see #1072 (@vijfhoek)
  • Improved "command not found" error message, see #1083 and #1109 (@themkat)
  • Preserve command exit codes when using --exec-batch, see #1136 and #1137 (@amesgen)

Changes

  • No leading ./ prefix for non-interactive results, see above.
  • fd now colorizes paths in parallel, significantly improving performance, see #1148 (@tavianator)
  • fd can now avoid stat syscalls even when colorizing paths, as long as the color scheme doesn't require metadata, see #1148 (@tavianator)
  • The statically linked musl versions of fd now use jmalloc, leading to a significant performance improvement, see #1062 (@tavianator)

Other

  • Added link back to GitHub in man page and --help text, see #1086 (@scottchiefbaker)
  • Major update in how fd handles command line options internally, see #1067 (@tmccombs)

v8.4.0

1 year ago

Features

  • Support multiple --exec <cmd> instances, see #406 and #960 (@tmccombs)

Bugfixes

  • "Argument list too long" errors can not appear anymore when using --exec-batch/-X, as the command invocations are automatically batched at the maximum possible size, even if --batch-size is not given. See #410 and #1020 (@tavianator)

Changes

  • Directories are now printed with an additional path separator at the end: foo/bar/, see #436 and #812 (@yyogo)
  • The -u flag was changed to be equivalent to -HI (previously, a single -u was only equivalent to -I). Additional -u flags are still allowed, but ignored. See #840 and #986 (@jacksontheel)

Other

  • Added installation instructions for RHEL8, see #989 (@ethsol)

v8.3.2

2 years ago

Bufixes

  • Invalid absolute path on windows when searching from the drive root, see #931 and #936 (@gbarta)