## Problem When `tree-sitter` feature is enabled, `ast::extract()` is called **three separate times** for the same file: 1. `extract_symbols()` -- discards edges 2. `extract_calls()` -- discards nodes, re-parses 3. `extract_edges()` -- re-parses again Each call re-parses the entire source into a new tree-sitter tree. ## Location `src/index/extract.rs:198, 513, 595` ## Solution Parse once in `index_file()`, pass `(nodes, edges)` to all three consumers. ## Expected Impact 2-3x reduction in parsing cost for tree-sitter path.
Activity
perf: Phase 1 + Search + Indexing — 1.8x cold index, 52x incremental,…
ajianaz commentedon Jul 28, 2026
Superseded. #412 was about parsing tree-sitter 3x per file — PR #422 refactored to single extract() call. Parent tracker no longer needed.
chore: v0.9.0 release prep (#423)
chore: sync v0.9.0 release prep to develop (#424)
chore: sync v0.9.0 release prep to develop (#424) (#425)
release: v0.10.0 (#442)
release: v0.11.1 → main (#450)