catmulti-path support —catnow accepts multiple paths and concatenates their contents (POSIX-standard behavior). Example:cat /auth/state /auth/login /auth/logoutoutputs all three files joined by newlines. Works with--rangeand piping.
-
Eliminated recursion limits — Converted all 9 recursive tree-walk functions (
emit,grep,tree,find,walk,glob,du,backlinks,sed) to iterative stack-based traversal. Previously,grep,find,du, andtreewould crash withRecursionErroron trees deeper than ~1,000 levels. Now handles 10,000+ levels with no issues.Operation Before (5,000 deep) After (5,000 deep) grep RecursionError 258ms find RecursionError 2.8ms du RecursionError 0.4ms tree RecursionError 81ms serialize RecursionError 1.8ms -
Benchmarked at scale — 100K files (8.9 MB raw): full-tree grep in 49ms, find in 29ms, cat in 0.06ms. See
stress_test.py.
- Added Performance section to README with benchmark tables.
- Added
stress_test.pyfor reproducible benchmarks.
grep(lines=True)— search file content line-by-line and returnpath:lineno:linestrings instead of just paths. Works withignore_case,invert, andpathscoping.- Shell
grep -n— new-nflag for the shellgrepcommand that activates line-match mode. Composable with existing flags (grep -ni pattern /path). Also works on piped stdin. slugify()— new utility (from loopy import slugify) that converts any string into a valid Loopy path segment. Lowercases, replaces invalid characters with hyphens, preserves dots and underscores. Returns"item"for empty input.
- Updated README with
grep(lines=True),grep -n, andslugify()docs. - Added this changelog.
- Export
FileBackedLoopy,load,savefrom main module.
- Add mutation hook (
on_mutate) and file-backed store.
- Shell improvements:
printf, test fixes.
- Initial public release with core filesystem API, shell, symlinks, and file-backed persistence.