v0.4.0 — memoized path reconstruction
Collection matches are siblings that share ancestors, so reconstructing each match's reference re-walked the same chain once per match — which ate the entire benefit of the server-side query. v0.4 memoizes that climb, and a collection query becomes the default for every read.
Measured across six applications
| app | default | method | --walk |
|---|---|---|---|
| gnome-text-editor | 12 ms | collection | 71 ms |
| gnome-calculator | 23 ms | collection | 97 ms |
| gnome-disks | 5 ms | collection | 15 ms |
| seahorse | 15 ms | collection | 29 ms |
| Nautilus | 560 ms | collection | 625 ms |
| gnome-control-center | 76 ms | collection+walk | 69 ms |
gnome-control-center --role "push button" |
4 ms | collection | 47 ms |
Five of six are 1.1–5.9x faster with identical refs and zero wrong refs. The sixth cannot prove a path for every match, so the read is automatically re-run as a walk (method: "collection+walk") at ~10% more than walking directly — the price of never returning an incomplete set by default.
--collection keeps the fast result including ref_ok:false entries; --walk skips the query. method always reports what ran.
Also in this release
- The path cache is per-query and never survives a UI change — a cached path outliving the tree it described would resurrect exactly the wrong-ref bug this tool exists to prevent.
watchruns uncached: one climb per event gains nothing from a cache, and its maps would live outside the arena.
Correction to the v0.2/v0.3 notes
The README previously claimed the arena fix reduced watch memory growth to zero. That was wrong — it was read off two samples that happened to coincide over a short run. Measured across ~1000 events, the arena fix cut growth from ~17 kB/event to ~0.17 kB/event (~100x), but not to zero. v0.3 and v0.4 grow at the same rate (~190 kB per 1000 events). Bound long-lived listeners with --duration/--max-events; closing the remainder is the top item for v0.5.
Install
curl -L -o linux-use https://github.com/javimosch/linux-use/releases/download/v0.4.0/linux-use-v0.4.0-x86_64-linux
chmod +x linux-use && sudo mv linux-use /usr/local/bin/
sudo apt install libatspi2.0-0 libxtst6 libx11-6 libglib2.0-0
gsettings set org.gnome.desktop.interface toolkit-accessibility true
linux-use doctor && linux-use guidesha256: c54cbf11acc1cf3f935ad9fddae3eb6861ad4f35e956a442f1425599bb1c603f
Docs and changelog: https://javimosch.github.io/linux-use/
Full Changelog: v0.3.0...v0.4.0