path-lib 1.0.0

Cross-platform application and OS directory resolution for Rust, with user and global scopes, hardened sub-path joining, and guarded filesystem operations. Zero dependencies.
# v0.1.0 — Initial Release

The first published release of `path-lib`: application and OS directory resolution for Linux, macOS, and Windows, with hardened sub-path joining and guarded filesystem operations, in a crate with zero runtime dependencies.

## Highlights

- **Application directories.** `App::new` (current user), `App::global` (whole machine), and `App::portable` (one chosen folder) resolve data, config, cache, logs, state, runtime, temp, and documents directories using each platform's conventions: XDG and FHS on Linux and the BSDs, the `Library` domains on macOS, and Known Folders on Windows. No two kinds ever share a directory.
- **Redirect-aware OS folders.** `home`, `documents`, `desktop`, `downloads`, `pictures`, `music`, and `videos` follow OneDrive folder redirection on Windows and `user-dirs.dirs` (including localised names) on Linux. All lookups are resolved once and cached for the life of the process; later calls cost about a nanosecond.
- **Hardened sub-paths.** `data_at`, `config_at`, and the other `*_at` accessors, plus the free function `join`, accept either slash style and reject traversal, drive letters, control characters, Windows-reserved characters and their Unicode look-alikes, bidirectional overrides, device names such as `CON`, and trailing dots or spaces before any path is built. `sanitize` repairs user-supplied names instead of rejecting them.
- **Guarded filesystem operations.** `make_dir`, `make_file`, `exists`, `list`, `remove`, `copy`, `move_to`, and `find` never overwrite, never follow symbolic links while walking a tree, build copies under a temporary name before renaming them into place, and refuse to remove or move filesystem roots, the home directory, or the user's standard folders.
- **Verified.** Unit, integration, and property tests (thousands of generated inputs per run, which caught and now guard a Windows path-cleaning edge case) pass on Windows and Linux at stable and MSRV 1.85; macOS and FreeBSD are type-checked with strict clippy.

## Performance

| Operation | Median |
|---|---|
| `home()` after first call | 0.94 ns |
| `app.data()` | 0.23 ns |
| `app.data_at("db/main")` | 78 ns |
| `App::new("HiveDB")` | 567 ns |

Full methodology and results are in [`docs/PERFORMANCE.md`](../PERFORMANCE.md).

## What's Next

Feedback from integrating `path-lib` into the companion `env-lib` and `global-lib` crates will shape the 0.x line before the API is frozen at 1.0.

## Compatibility

- **MSRV:** Rust 1.85
- **Edition:** 2024
- **Platforms:** Linux, macOS, Windows (FreeBSD and other BSDs follow the Linux rules)