Open-Source Wikis

/

fd

/

Reference

/

Dependencies

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 via std::thread::scope.
  • No serialization crate (serde, etc.). Configuration is entirely CLI-driven.
  • No logging framework (log, tracing, etc.). Errors go through a single print_error helper. 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:

  • ignore already encodes years of git's nuances around ignore semantics.
  • argmax already knows the per-platform ARG_MAX quirks.
  • lscolors already handles every wrinkle of the LS_COLORS mini-language.
  • jiff already 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.

Dependencies – fd wiki | Factory