Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
4 changes: 4 additions & 0 deletions .jules/bolt.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,7 @@
## 2025-05-19 - File Discovery Allocations
**Learning:** In `discover_importing_files`, `WalkBuilder` results were being converted to `PathBuf` via `.map(|e| e.into_path())` *before* filtering. This caused allocations for every single file in the workspace (including excluded files and directories).
**Action:** Filter `ignore::DirEntry` directly using `entry.file_type()` and `entry.path()` before mapping to `PathBuf`. This avoids allocations for non-matching files.

## 2024-06-10 - Early Exit in Code Text Heuristics
**Learning:** In Rust, heuristic functions that count characters or bytes (e.g., `is_likely_code_text` in `crates/mill-services/src/services/reference_updater/detectors/generic.rs`) should be optimized with an early exit as soon as a failure/success threshold is met. This significantly improves performance on 'mismatch' cases by avoiding full scans of the sampled data.
**Action:** When implementing threshold-based heuristic scans, add an early return within the loop to short-circuit as soon as the threshold guarantees the outcome. Ensure default return values (like `sample_len > 0`) correctly handle empty inputs to preserve original functionality.
Original file line number Diff line number Diff line change
Expand Up @@ -519,12 +519,17 @@ fn is_likely_code_text(content: &str) -> bool {
let sample = &content.as_bytes()[..sample_len];
let mut non_printable = 0usize;
for &b in sample {
let is_text = b == b'\n' || b == b'\r' || b == b'\t' || (b >= 0x20 && b <= 0x7e);
let is_text = b == b'\n' || b == b'\r' || b == b'\t' || (0x20..=0x7e).contains(&b);
if !is_text {
non_printable += 1;
// Early exit optimization: if non-printable characters exceed the threshold,
// we immediately know this is not likely text, avoiding a full 8KB scan.
if non_printable * 20 >= sample_len {
return false;
}
}
}
non_printable * 20 < sample_len
sample_len > 0
}

fn is_obviously_irrelevant_extension(ext: &str) -> bool {
Expand Down
Loading