sharkdp/fd
Dependencies
Direct dependencies declared in Cargo.toml (commit 2250bb0). Versions reflect the entry in Cargo.toml at the time of the snapshot — the resolved versions are pinned in Cargo.lock.
Runtime dependencies
| Crate | Version pin | Why fd needs it |
|---|---|---|
clap |
4.6.0 (with suggestions, color, wrap_help, cargo, derive) |
Command-line parsing. The whole Opts struct in src/cli.rs is a clap derive. |
clap_complete |
4.6.0, optional via the completions feature |
Backs --gen-completions for bash/zsh/fish/PowerShell. |
aho-corasick |
1.1 |
Fast multi-pattern matcher used by FormatTemplate::parse to recognise placeholder literals ({}, {/}, {//}, {.}, {/.}, {{, }}). |
nu-ansi-term |
0.50 |
ANSI color/style application for printed paths. Pairs with lscolors. |
argmax |
0.4.0 |
argmax::Command wrapper that tracks accumulated argv bytes so --exec-batch flushes before exceeding ARG_MAX. |
ignore |
0.4.25 |
Parallel directory walker that honours .gitignore/.ignore/.fdignore. The same crate ripgrep uses. |
regex |
1.12.2 |
Pattern matching against file basenames or full paths via regex::bytes::Regex. |
regex-syntax |
0.8 |
Parses patterns into Hir for smart-case detection (regex_helper.rs). |
ctrlc |
3.5 |
Cross-platform Ctrl-C handler installed in WorkerState::scan. |
globset |
0.4 |
Translates --glob patterns into regular expressions. |
anyhow |
1.0 |
Top-level error type, used as Result<...> everywhere. |
etcetera |
0.11 |
Locates the platform-appropriate config directory for the global fdignore file. |
normpath |
1.1.1 |
Path normalisation, especially for Windows path components. |
crossbeam-channel |
0.5.15 |
Bounded MPMC channel between sender threads and the receiver(s). |
faccess |
0.2.4 |
Used by FileTypes::should_ignore to detect executability for -t executable. |
jiff |
0.2.18 |
Date and duration parsing for --changed-within / --changed-before. Replaced humantime and chrono in 10.3.0. |
lscolors |
0.21 (default features off, nu-ansi-term feature on) |
Parses LS_COLORS and styles paths. |
nix |
0.31.1 (Unix only, default features off, signal/user/hostname) |
UID/GID lookups for OwnerFilter, signal handling for the SIGINT re-raise, hostname for OSC 8 hyperlinks. |
libc |
0.2 (Unix without Redox) |
Direct libc bindings used by the Unix metadata path-handling. |
tikv-jemallocator |
0.6.0 (optional, gated on a long target-cfg list) |
Selected as #[global_allocator] on most Unix targets for performance. |
Dev dependencies
Listed in [dev-dependencies] and only present when running tests:
| Crate | Version pin | Use |
|---|---|---|
diff |
0.1 |
Pretty-print diffs in tests/testenv/mod.rs when integration tests fail. |
tempfile |
3.27 |
The TempDir API used by TestEnv to build per-test directory trees. |
filetime |
0.2 |
Set precise mtimes on test fixtures for --changed-within / --changed-before. |
test-case |
3.3 |
Parameterised test attribute used by some unit tests. |
Cargo features
| Feature | Effect |
|---|---|
use-jemalloc |
Pulls in tikv-jemallocator and enables it as the global allocator (when the target is supported). |
completions |
Pulls in clap_complete and enables --gen-completions. |
base |
use-jemalloc only — used for "base" builds without completion generation. |
default |
use-jemalloc + completions. |
Build profile changes
Cargo.toml customises three profiles:
| Profile | Settings |
|---|---|
dev |
debug = "line-tables-only". Crates are built with debug = false to keep build times short. |
release |
lto = true, strip = true, codegen-units = 1. Optimised, slow-to-build, small binary. |
debugging |
inherits dev with debug = true for full backtraces during debugging. |
Notable absences
- No async runtime (
tokio,async-std, etc.). fd uses native threads viastd::thread::scope. - No serialization crate (
serde, etc.). Configuration is entirely CLI-driven. - No logging framework (
log,tracing, etc.). Errors go through a singleprint_errorhelper. See debugging. - No HTTP/network libraries. fd is a strictly local tool.
Why not roll our own?
fd's value proposition is "simple, fast, user-friendly". Most of the heavy lifting is delegated to focused crates the maintainers trust:
ignorealready encodes years of git's nuances around ignore semantics.argmaxalready knows the per-platformARG_MAXquirks.lscolorsalready handles every wrinkle of theLS_COLORSmini-language.jiffalready handles calendar arithmetic correctly.
The maintainer pattern, visible in the commit history and the CHANGELOG, is to lean into a well-maintained dependency rather than re-implementing it.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.