Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

[Suggestion]: idle live roots wake every 25 ms; notify-debouncer-full fixed this on main (notify #933)

Open
#970 5 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 3 days

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
45/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
rust
Domain
performance

Research direction

Start with crates/fff-core/src/watcher/background_watcher.rs at the debounce timeout setup, then inspect the vendored fff-notify-debouncer-full loop described in the issue. Compare notify-rs PR #933 with the current fork and decide whether to port only that change or track upstream main; the thread asks maintainers to agree on the approach. Done means idle roots stop polling while debounce timing stays unchanged, with a test counting idle loop iterations.

Written by the indexing model from the issue text.

Description

triaged

I am a user of fff-search. I measured idle watcher cost on macOS with fff-search 0.11.0 (mode: Ai, watch: true, off-screen probe): each idle live root uses about 0.45 ms CPU/s and about 33 interrupt wakeups/s; three roots about 100 wakeups/s; no root 0.

The cause is the debouncer thread: fff-notify-debouncer-full 0.9.4 runs loop { thread::sleep(tick); debounced_events() } (src/lib.rs:765 of that crate), with tick = DEBOUNCE_TIMEOUT / 2 = 25 ms (crates/fff-core/src/watcher/background_watcher.rs:195-197). It never waits for events, so an idle root wakes about 40 times a second.

Upstream already has the fix: notify-rs PR #933 (merged 2026-06-01, https://github.com/notify-rs/notify/pull/933) adds a Condvar so the loop sleeps until events are queued, then keeps the same tick until they expire. Debounce timing is unchanged. It is not in a crates.io release yet, and fff-notify-debouncer-full 0.9.4 predates it.

Proposal: bring that change into fff-notify-debouncer-full, with a test that counts idle loop iterations. No public API change. I can open the PR only after you agree on the approach. Should the fork track notify-debouncer-full main, or take only #933?

Dominant language
Rust
Stars
11.2k
Forks
473
Avg merge
2d 7h
Merged PRs (30d)
32

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from dmtrKovalenko/fff

All issues in dmtrKovalenko/fff

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.