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.
- 1 CVE mentioned
37 changes across 8 releases
- Add `--ignore-parent` option to override `--no-ignore-parent`
- Add `--exact` option to match the entire filename exactly (literal, non-substring)
- Add `--ignore-contain` option to ignore directories containing a named entry
- Add a hidden --mindepth alias for --min-depth
- Add --hyperlink option to add OSC 8 hyperlinks to output
- 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
- 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
- Reject a placeholder as the executable for `--exec-batch`, while still allowing it for `--exec`
- 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
- 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
- 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
- aarch64-apple-darwin target added to builds on the release page
- No longer automatically ignore `.git` when using `--hidden` with vcs ignore enabled
- Minimum supported rust version is now 1.77.2
- 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
- Fixed performance regression due to --ignore-contain
- 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
- Fix aarch64 page size
- 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
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-parentoption to override--no-ignore-parent, see #1958 (@tmchow) - Add
--exactoption 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
--andpatterns, not only the primary positional pattern.--andpatterns 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-withinis given an out-of-range@Unix timestamp; the value is now rejected gracefully, see #2081 (@nikolauspschuetz).
New Contributors
- @liruiluo made their first contribution in https://github.com/sharkdp/fd/pull/1924
- @Xavrir made their first contribution in https://github.com/sharkdp/fd/pull/1917
- @rexkirshner made their first contribution in https://github.com/sharkdp/fd/pull/1921
- @Rohan5commit made their first contribution in https://github.com/sharkdp/fd/pull/1934
- @tmchow made their first contribution in https://github.com/sharkdp/fd/pull/1959
- @YoshKoz made their first contribution in https://github.com/sharkdp/fd/pull/1979
- @SAY-5 made their first contribution in https://github.com/sharkdp/fd/pull/1975
- @skane-lukas made their first contribution in https://github.com/sharkdp/fd/pull/1889
- @Sean-Kenneth-Doherty made their first contribution in https://github.com/sharkdp/fd/pull/2006
- @stevenwalton made their first contribution in https://github.com/sharkdp/fd/pull/2011
- @DeflateAwning made their first contribution in https://github.com/sharkdp/fd/pull/1983
- @wyf027 made their first contribution in https://github.com/sharkdp/fd/pull/2001
- @bonanza127 made their first contribution in https://github.com/sharkdp/fd/pull/2040
- @mahirhir made their first contribution in https://github.com/sharkdp/fd/pull/2036
- @parneetsingh022 made their first contribution in https://github.com/sharkdp/fd/pull/2037
- @curious-rabbit made their first contribution in https://github.com/sharkdp/fd/pull/1976
- @WilliamLeony made their first contribution in https://github.com/sharkdp/fd/pull/2064
- @kobihikri made their first contribution in https://github.com/sharkdp/fd/pull/2063
- @cmelaro made their first contribution in https://github.com/sharkdp/fd/pull/2075
- @nikolauspschuetz made their first contribution in https://github.com/sharkdp/fd/pull/2082
Full Changelog: https://github.com/sharkdp/fd/compare/v10.4.2...v10.5.0
v10.4.2
Bugfixes
- Fixed performance regression due to
--ignore-contain; see #1913 and #1914
v10.4.1
This is just a re-release of 10.4.0 due to an issue with the 10.4.0 release.
v10.4.0
Features
- Add
--ignore-containoption to ignore directories containing a named entry (e.g. to ignoreCACHEDIR.TAG); see #1727 (@fischman).
Bugfixes
-
Fix Windows hyperlink generation for paths with spaces. (#1872)
-
--print0combined with--execwill now print a\0between the output of each entry. Note that if there are multiple instances of--exec, the\0will be between each set of commands, not between each individual command run. Fixes #1797. -
Several bugs were fixed by an update to the
ignorelibrary 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)
v10.3.0
Features
- Add a hidden
--mindepthalias for--min-depth. (#1617)
Bugfixes
Changes
- Replace
humantimecrate andchronocrate withjiffcrate, see #1690 (@sorairolake). This has some small changes to the way dates given to options such--changed-withinand--changed-beforeincluding:- '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.
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
- @bryanhonof made their first contribution in https://github.com/sharkdp/fd/pull/1574
- @JCHacking made their first contribution in https://github.com/sharkdp/fd/pull/1602
- @RossSmyth made their first contribution in https://github.com/sharkdp/fd/pull/1596
Full Changelog: https://github.com/sharkdp/fd/compare/v10.1.0...v10.2.0
v10.1.0
Features
- Allow passing an optional argument to
--strip-cwd-prefixof "always", "never", or "auto". to force whether the cwd prefix is stripped or not. - Add a
--formatoption 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.
v10.0.0
Features
- Add
diras an alias todirectorywhen 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
.gitwhen using--hiddenwith 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-detailsoption. (#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