Thanks for helping improve UFFS.
- UFFS is Windows-first: live NTFS MFT reads require Windows and Administrator privileges.
- macOS and Linux remain valid contributor hosts for docs work, offline/query logic, and cross-platform tests.
- Keep Windows-only I/O behind
#[cfg(windows)]and prefer cross-platform validation when possible.
- Use the pinned nightly toolchain from
rust-toolchain.toml. - The workspace MSRV is Rust 1.85, but day-to-day development should use the pinned nightly.
justis the primary workflow entry point.
Recommended setup:
- Install the nightly toolchain:
rustup toolchain install nightly - Install
just:cargo install just - Install the common contributor toolchain:
just setup - List available workflows any time with
just
For cross-compilation from macOS/Linux hosts:
just setup-cross— install cross targets used by the workspacejust check-cross— run the CI-style cross-compilation validation- See
docs/xwin-msvc-rlib-size-root-cause-and-workarounds.mdforcargo xwin/ MSVC-specific notes
Prefer the smallest command that proves your change:
just check— quick workspace validation (cargo check, formatting check, file-size policy)just fmt— format the workspacejust test— workspace tests via nextest/llvm-covjust test-doc— documentation testsjust lint-prod— strict production Clippyjust lint-tests— test-target Clippyjust build— workspace buildjust go— full fast-fail workflow when you want the whole pipeline
Focused examples from the current workflow canon:
cargo nextest run -p uffs-mft -- treecargo test -p uffs-core -- path_resolver --nocapturecargo test -p uffs-mft --lib -- --nocapture
Most tests run cross-platform. Tests that need live MFT access are typically #[ignore] and should only be run on Windows with elevation.
- Do not depend on
polarsdirectly; useuffs-polars. - Preserve the crate layering:
uffs-polars←uffs-mft←uffs-core←uffs-cli/uffs-tui. - Prefer fixture-, golden-, or saved-MFT/index-based tests for portable validation.
- Update docs when contributor-facing workflow or user-visible behavior changes.
- Root overview:
README.md - Documentation map:
docs/README.md - Developer docs landing page:
docs/dev/README.md - Architecture docs:
docs/architecture/README.md
If you are changing behavior that depends on raw NTFS access, call out the Windows/Admin requirement in the relevant docs and tests.