Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
2e57d60
docs(architecture): design for incremental index maintenance (base+de…
githubrobbi Jun 26, 2026
629966b
feat(idxdelta): phase-0 measurement rig — build stamp + per-step appl…
githubrobbi Jun 26, 2026
90d02ff
docs(idxdelta): record measured baseline + re-sequence phases by cost
githubrobbi Jun 26, 2026
9806bc3
feat(idxdelta): phase 1 — incremental compute_path_lengths
githubrobbi Jun 26, 2026
794efc5
docs(idxdelta): mark Phase 1 done in tracking table
githubrobbi Jun 26, 2026
61dfde0
feat(idxdelta): phase 2 scaffold — IndexDelta overlay type
githubrobbi Jun 26, 2026
03e4f0c
docs(idxdelta): mark IndexDelta type done; note field deferred to Pha…
githubrobbi Jun 26, 2026
8b61e62
fix(idxdelta): phase 1 — delete-only batch must not full-recompute paths
githubrobbi Jun 26, 2026
1d4e396
feat(idxdelta): rig auto-syncs ~/bin from the real build dir + assert…
githubrobbi Jun 26, 2026
1cf72d5
feat(idxdelta): phase 2a — trigram_search base+delta choke point (plu…
githubrobbi Jun 26, 2026
c3728b0
refactor(compact): decompose compact.rs (1363 → 385 lines) into submo…
githubrobbi Jun 26, 2026
b7c688e
feat(idxdelta): phase 2b — apply populates trigram delta, no per-tick…
githubrobbi Jun 26, 2026
6a8e398
test(idxdelta): scale verify bursts to 100k + measure true apply latency
githubrobbi Jun 26, 2026
161a4ad
perf(idxdelta): refold directly when a batch will cross the compactio…
githubrobbi Jun 26, 2026
c22a036
fix(idxdelta): verify rig tolerates a locked broker exe + drop dead c…
githubrobbi Jun 27, 2026
77c6548
fix(idxdelta): build-id guard only fails on build-affecting changes
githubrobbi Jun 27, 2026
6f52323
test(idxdelta): unambiguous rename/delete smoke on unique sentinels
githubrobbi Jun 27, 2026
33e754b
perf(idxdelta): phase 3 — Arc-share the base CSR indexes (cheaper clone)
githubrobbi Jun 27, 2026
42ff96b
feat(idxdelta): phase 4a — extension delta overlay (no per-apply ext …
githubrobbi Jun 27, 2026
9a33ad5
docs(readme): canonicalize benchmark blog link to uffs.io
githubrobbi Jun 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ Every clip runs the **real binary** against real NTFS data with unedited timings

## Benchmark snapshot (v0.5.120 · June 2026)

📖 **The story behind these numbers:** [*I benchmarked my Rust file search engine against Everything until I ran out of excuses*](https://skyllc-ai.github.io/blog/benchmarking-against-everything/) — the methodology I had to fix first, the bulk-export workload Everything's CLI can't run, and the two regressions published anyway.
📖 **The story behind these numbers:** [*I benchmarked my Rust file search engine against Everything until I ran out of excuses*](https://uffs.io/blog/benchmarking-against-everything/) — the methodology I had to fix first, the bulk-export workload Everything's CLI can't run, and the two regressions published anyway.

Measured 2026-06-11 on AMD Ryzen 9 3900XT, 64 GB RAM, Windows 11 Pro 24H2 — cross-tool on four NTFS volumes (C/D/F/G, 12.8 M records, the Everything-RAM-budget-negotiated set), full-scan on all seven (25.9 M records; that workload is UFFS-only, so the negotiation doesn't constrain it). Raw data: [`cross-tool-summary.csv`](docs/benchmarks/raw/2026-06-v0.5.120_cross-tool-summary.csv) · [`full-scan-all-drives.csv`](docs/benchmarks/raw/2026-06-v0.5.120_full-scan-all-drives.csv). Publication-grade report: [**docs/benchmarks/**](docs/benchmarks/).

Expand Down
18 changes: 6 additions & 12 deletions crates/uffs-core/src/aggregate/rollup.rs
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,8 @@ pub(crate) fn resolve_rollup_key(key: u32, mode: RollupMode, drive: &DriveCompac
reason = "tests assert against fixtures with known shape; indexing panic = test failure"
)]
mod tests {
use alloc::sync::Arc;

use super::*;

#[test]
Expand Down Expand Up @@ -233,7 +235,6 @@ mod tests {

use crate::compact::{ChildrenIndex, CompactRecord, ExtensionIndex, IndexSource};
use crate::trigram::TrigramIndex;

// Build names blob: concatenated UTF-8 strings.
let name_strs = [
"root",
Expand All @@ -254,26 +255,20 @@ mod tests {
let dir = 0x0010_u32; // FILE_ATTRIBUTE_DIRECTORY
let records = vec![
CompactRecord {
size: 0,
allocated: 0,
name_offset: offsets[0],
flags: dir,
parent_idx: 0,
name_len: uffs_mft::len_to_u16(name_strs[0].len()),
..Default::default()
},
CompactRecord {
size: 0,
allocated: 0,
name_offset: offsets[1],
flags: dir,
parent_idx: 0,
name_len: uffs_mft::len_to_u16(name_strs[1].len()),
..Default::default()
},
CompactRecord {
size: 0,
allocated: 0,
name_offset: offsets[2],
flags: dir,
parent_idx: 0,
Expand All @@ -290,8 +285,6 @@ mod tests {
..Default::default()
},
CompactRecord {
size: 0,
allocated: 0,
name_offset: offsets[4],
flags: dir,
parent_idx: 1,
Expand Down Expand Up @@ -324,9 +317,9 @@ mod tests {
letter: uffs_mft::platform::DriveLetter::C,
records: crate::compact_storage::ColumnStorage::from_vec(records),
names: crate::compact_storage::ColumnStorage::from_vec(names_blob),
trigram: TrigramIndex::empty(),
children,
ext_index: ExtensionIndex::build(&[]),
trigram: Arc::new(TrigramIndex::empty()),
children: Arc::new(children),
ext_index: Arc::new(ExtensionIndex::build(&[])),
fold: uffs_text::case_fold::CaseFold::default_table(),
ext_names: vec![],
source: IndexSource::MftFile(PathBuf::from("C:")),
Expand All @@ -335,6 +328,7 @@ mod tests {
path_trie: None,
// unused by aggregation tests — see compact.rs::frs_to_compact docs.
frs_to_compact: Vec::new(),
delta: None,
}
}

Expand Down
Loading
Loading