Repository navigation
v1.8.0
Git exclude files are now honored, recursive globs can run in parallel, and Android and iOS builds are checked in CI. These notes also cover 1.7.0 and 1.7.1, which were tagged without a GitHub release.
Upgrade notes
- Zig 0.17.1 or newer is required, including to build the Rust crate. Zig 0.16 is no longer supported. Zig 0.17.0 can't build iOS targets because of a standard library error.
GITIGNOREwalks now read git's exclude files. Inside a repository they honor$GIT_DIR/info/excludeandcore.excludesFile, which means reading git config from the home directory. Tracked files matching those rules are hidden, the same as ripgrep and fd. Opt out withNO_GIT_EXCLUDEandNO_GIT_GLOBAL.- Walker patterns stay within one path component.
*,?and character classes no longer cross/. Only**does. - Zig API: the walker's
Entrychanged.basenameis now a method, andmetais an optional pointer. The C API only gains new flags and functions.
New features
- Parallel recursive globs. Opt in with
ZLOB_PARALLELandzlob_set_threads()in C,ZlobFlags::PARALLELandset_threads()in Rust, or-j/--threadsin the CLI. Results match the serial path. (#33) - Git exclude files.
info/excludeandcore.excludesFileapply with git's precedence, including in linked worktrees and submodules, and also reachignore_rules(). (#41) - Parent ignore rules.
GITIGNORE_PARENTSinherits ignore rules up to the containing worktree when walking a subtree. (0d04f73) - Per-file ignore controls.
SKIP_GITIGNOREandSKIP_DOT_IGNOREturn off either ignore file type. (#42) - Basename matching.
ZLOB_MATCH_BASENAMElets patterns without a slash match names at any depth. (#34)
Performance
- The parallel walker does less work per walk: smaller entries and result records, parallel result merging, and no EOF-confirming
getdents64call on supported filesystems. (#33) - Linux walks read metadata after filtering, so entries that aren't reported cost no system call. (#39)
- Template and basename comparisons in the matcher are faster. (#36)
Fixes
- Android armv7 and other 32-bit Linux targets build on Zig 0.17. (#44)
- The Rust crate builds for
aarch64-apple-ios-sim. (#44) - Directories reported as
DT_UNKNOWNare traversed instead of skipped, and walks no longer revisit ancestors through symlinks. (#33) - Recursive star runs such as
***match the same as git when nested directory negations are present. (#39) - The matcher preserves negated classes and trailing separators. (#37)
- riscv64 gnu and musl targets build, thanks to @ethernomad. (#32)
Build and CI
- CI builds the Zig library and the Rust crate for three Android and three iOS targets. These jobs compile only and don't run tests on a device. (#44)
- Clippy now covers tests and benches. (#44)
- The No-libc job works on Ubuntu 26.04. (#43)
Full Changelog: v1.6.5...v1.8.0