What changed in fd from 9 to 10

8 releases numbered after v9.0.0 up to and including v10.5.0, stable releases only. v9.0.0 and v10.5.0 are the newest stable releases of 9 and 10 we track; this page follows them as new ones ship.

37 changes across 8 releases

Added 9

v10.5.0

  • Add `--ignore-parent` option to override `--no-ignore-parent`
  • Add `--exact` option to match the entire filename exactly (literal, non-substring)

v10.4.0

  • Add `--ignore-contain` option to ignore directories containing a named entry

v10.3.0

  • Add a hidden --mindepth alias for --min-depth

v10.2.0

  • Add --hyperlink option to add OSC 8 hyperlinks to output

v10.1.0

  • Allow passing an optional argument to --strip-cwd-prefix of "always", "never", or "auto" to force whether the cwd prefix is stripped or not
  • Add a --format option which allows using a format template for direct output similar to the template used for --exec

v10.0.0

  • Add `dir` as an alias to `directory` when using `-t` or `--type`
  • Add support for @%s date format in time filters to specify seconds since Unix epoch for --older/--newer
Changed 13

v10.5.0

  • Reject a placeholder as the executable for `--exec-batch`, while still allowing it for `--exec`

v10.4.0

  • Minimum required rust version has been increased to 1.90.0
  • Statically link the CRT for MSVC builds via Cargo config to avoid runtime DLL dependencies

v10.3.0

  • Replace humantime crate and chrono crate with jiff crate
  • 'M' no longer means "month" in date parsing; use "mo", "mos", "month" or "months" instead
  • Month and year in date parsing now account for variability in the calendar rather than being hard-coded number of seconds
  • Add aarch64 Windows to CI and release artifacts
  • Improve support building on Illumos

v10.2.0

  • Build windows releases with rust 1.77 so windows 7 is still supported
  • Deb packages now include symlink for fdfind to be more consistent with official packages

v10.1.0

  • aarch64-apple-darwin target added to builds on the release page

v10.0.0

  • No longer automatically ignore `.git` when using `--hidden` with vcs ignore enabled
  • Minimum supported rust version is now 1.77.2
Fixed 13

v10.5.0

  • Handle invalid working directories gracefully when using `--full-path`
  • Fire the "search pattern contains a path separator" diagnostic for any pattern containing `/`, not just patterns that happen to name an existing directory
  • Fire the "search pattern contains a path separator" diagnostic for `--and` patterns, not only the primary positional pattern
  • Fix bug where passing "-" as a directory argument didn't actually search that directory
  • Fix panic when `--changed-before`/`--changed-within` is given an out-of-range `@` Unix timestamp; the value is now rejected gracefully

v10.4.2

  • Fixed performance regression due to --ignore-contain

v10.4.0

  • Fix Windows hyperlink generation for paths with spaces
  • `--print0` combined with `--exec` will now print a `\0` between the output of each entry
  • Fix bugs in the `ignore` library used for handling ignore rules

v10.1.0

  • Fix aarch64 page size

v10.0.0

  • Respect NO_COLOR environment variable with `--list-details` option
  • Fix bug that would cause hidden files to be included despite gitignore rules if search path is "."
  • aarch64 builds now use 64k page sizes with jemalloc to fix issues on systems with larger page sizes
Security 2

v10.5.0

  • Sanitize control characters and bidirectional override characters in filenames when output goes to a terminal to prevent terminal escape-sequence injection

v10.0.0

  • Address CVE-2024-24576 by increasing minimum rust version

One release in the range carries no categorized changes yet: v10.4.1. Their original notes, where the vendor published any, are below.

Original release notes, newest first

The list above is our reading of these notes; the originals from David Peter are here, one fold per release.

v10.5.010.5.0
Features
  • Add --ignore-parent option to override --no-ignore-parent, see #1958 (@tmchow)
  • Add --exact option to match the entire filename exactly (literal, non-substring).
Bugfixes
  • Sanitize control characters and bidirectional override characters in filenames when output goes to a terminal, to prevent terminal escape-sequence injection. Also reject a placeholder as the executable for --exec-batch, while still allowing it for --exec.
  • Handle invalid working directories gracefully when using --full-path, see #1900 (@Xavrir).
  • Fire the "search pattern contains a path separator" diagnostic for any pattern containing /, not just patterns that happen to name an existing directory. Preserves the legacy Windows behaviour that also flags native \ separators when the pattern resolves to a real directory. See #1873.
  • Also fire the "search pattern contains a path separator" diagnostic for --and patterns, not only the primary positional pattern. --and patterns are matched against the file name just like the primary pattern, so a path separator in them silently returned zero results. See #1873.
  • Fix bug where passing "-" as a directory argument didn't actually search that directory, see #849 (@Sean-Kenneth-Doherty).
  • Fix panic when --changed-before/--changed-within is given an out-of-range @ Unix timestamp; the value is now rejected gracefully, see #2081 (@nikolauspschuetz).
New Contributors

Full Changelog: https://github.com/sharkdp/fd/compare/v10.4.2...v10.5.0

View originalPermalink

v10.4.2
Bugfixes
  • Fixed performance regression due to --ignore-contain; see #1913 and #1914

View originalPermalink

v10.4.1

This is just a re-release of 10.4.0 due to an issue with the 10.4.0 release.

View originalPermalink

v10.4.0
Features
  • Add --ignore-contain option to ignore directories containing a named entry (e.g. to ignore CACHEDIR.TAG); see #1727 (@fischman).
Bugfixes
  • Fix Windows hyperlink generation for paths with spaces. (#1872)

  • --print0 combined with --exec will now print a \0 between the output of each entry. Note that if there are multiple instances of --exec, the \0 will be between each set of commands, not between each individual command run. Fixes #1797.

  • Several bugs were fixed by an update to the ignore library used for handling ignore rules

    • #1506
    • #1667
    • #1813
Changes
  • Minimum required rust version has been increased to 1.90.0. Notably, this means dropping fully support for intel Mac and Windows 7.
  • Statically link the CRT for MSVC builds via Cargo config to avoid runtime DLL dependencies, see #1874 (@FidelSch)

View originalPermalink

v10.3.0
Features
  • Add a hidden --mindepth alias for --min-depth. (#1617)
Bugfixes
Changes
  • Replace humantime crate and chrono crate with jiff crate, see #1690 (@sorairolake). This has some small changes to the way dates given to options such --changed-within and --changed-before including:
    • 'M' no longer means "month", as that could be confusing with minutes. Use "mo", "mos", "month" or "months" instead.
    • month and year now account for variability in the calander rather than being a hard-coded number of seconds. That is probably what you would expect, but it is a slight change in behavior.
  • aarch64 Windows was added to CI and release artifacts
  • Many dependencies were updated
  • Better support building on Illumos (there is no automated testing, but some known issues were fixed)
Other

This will be the last release that has been tested on x86_64 Mac OS, since GitHub is dropping support for runners with that hardware.

It may also be the last release to use a version of Rust with tier-1 support for x86_64/intel Macs and Windows 7.

View originalPermalink

v10.2.0
Features
  • Add --hyperlink option to add OSC 8 hyperlinks to output
Changes
  • Build windows releases with rust 1.77 so windows 7 is still supported
  • Deb packages now include symlink for fdfind to be more consistent with official packages
New Contributors

Full Changelog: https://github.com/sharkdp/fd/compare/v10.1.0...v10.2.0

View originalPermalink

v10.1.0
Features
  • Allow passing an optional argument to --strip-cwd-prefix of "always", "never", or "auto". to force whether the cwd prefix is stripped or not.
  • Add a --format option which allows using a format template for direct ouput similar to the template used for --exec. (#1043)
Bugfixes
  • Fix aarch64 page size again. This time it should actually work. (#1085, #1549) (@tavianator)
Other
  • aarch64-apple-darwin target added to builds on the release page. Note that this is a tier 2 rust target.

View originalPermalink

v10.0.0
Features
  • Add dir as an alias to directory when using -t \ --type, see #1460 and #1464 (@Ato2207).
  • Add support for @%s date format in time filters similar to GNU date (seconds since Unix epoch for --older/--newer), see #1493 (@nabellows)
  • Breaking: No longer automatically ignore .git when using --hidden with vcs ignore enabled. This reverts the change in v9.0.0. While this feature was often useful, it also broke some existing workflows, and there wasn't a good way to opt out of it. And there isn't really a good way for us to add a way to opt out of it. And you can easily get similar behavior by adding .git/ to your global fdignore file. See #1457.
Bugfixes
  • Respect NO_COLOR environment variable with --list-details option. (#1455)
  • Fix bug that would cause hidden files to be included despite gitignore rules if search path is "." (#1461, BurntSushi/ripgrep#2711).
  • aarch64 builds now use 64k page sizes with jemalloc. This fixes issues on some systems, such as ARM Macs that have a larger system page size than the system that the binary was built on. (#1547)
  • Address CVE-2024-24576, by increasing minimum rust version.
Changes
  • Minimum supported rust version is now 1.77.2

View originalPermalink