Skip to content

v0.13.8

Choose a tag to compare

@robtaylor robtaylor released this 24 Feb 01:14
· 39 commits to main since this release

Performance

Fast startup on large repos (v0.13.8)

  • On iree (60k files), the MCP server took 10 seconds to become ready — spent entirely on 8 rglob calls counting files for the staleness check
  • Split is_stale() into fast and full modes:
    • Fast (startup + tool calls): samples mtime of 100 cached file paths, no filesystem walk — <0.1s
    • Full (periodic background check every 60s): does the expensive file count to detect new/deleted files
  • Startup-to-ready on iree: 10s → <0.1s

Skip O(n²) similarity checks on large repos (v0.13.7)

  • find_similar_classes/find_similar_functions were doing pairwise SequenceMatcher comparisons — 87M comparisons on baspacho (13k functions), burning 100% CPU for minutes after indexing
  • Skipped when candidate list exceeds 2,000 symbols

Fixes

Zombie server processes (v0.13.5)

  • Servers hung indefinitely after sessions ended due to uncancelled background tasks

Infinite reindex loop (v0.13.6)

  • Large repos with uncacheable files triggered reindexing every 20 minutes forever (since January on iree)

Unthrottled hook processes

  • Removed map.py from project-switch hook (MCP server handles indexing with proper resource limits)
  • Added 60s timeout to scan.py in hook

New

Server diagnostics: uv run scripts/servers.py

  • Lists all running repo-map servers with PID, uptime, memory, project root, index status, cache info, and recent logs