v0.20.2
What's Changed
Features
-
analyze_symbol: L2 on-disk cache (#1149, closes #1147, #1148):analyze_symbolwas the only analysis tool without a disk cache tier. TheCallGraphCacheis now wired intoDiskCacheusing an L1-miss -> L2-check -> compute -> write-both pattern. Measured across 84 calls, the tool had a 94% miss rate and 271 ms average latency; the disk tier (already delivering 39-58% hit rates for other tools) eliminates redundant re-parses across sessions.APTU_CODER_DISK_CACHE_DISABLED=1disables the new tier alongside all others. Atest_meta_field_orderingregression guard is included to protect the_metafield ordering invariant. -
exec_command: optionaltimeout_secsparameter (#1155, closes #1152): Accepts an integer>= 0;0or omitted means no limit. When the child process exceeds the limit it is killed and the response carriestimed_out: truewith a nullexit_code. Type isOption<i64>(notu64) to avoid a non-standard JSON Schema format. -
exec_command: heredoc pre-spawn validation (#1153, closes #1151):validate_heredocsscans the command string for unclosed heredoc delimiters before any process is spawned, preventing indefinite hangs when JSON escaping corrupts a closing delimiter. The scanner tracks single-quoted and double-quoted regions (avoiding false positives fromawkbitshift operators and inline strings), extracts the bare delimiter word, and applies POSIX exact-match semantics for both<<and<<-forms. A malformed heredoc now returns an immediateisError: trueresponse instead of timing out after hundreds of seconds. -
analyze_symbol:call_frequencyfiltered on field projection (#1156, closes #1142):SemanticAnalysis::project()now stripscall_frequencyentries for symbols absent from the projected functions/classes set whenfieldsisSomeand does not includeAll. Also applies.with_priority(0.9)to primaryContent::text()success blocks inanalyze_file,analyze_symbol, andanalyze_directoryhandlers. -
Metrics:
languagefield in JSONLMetricEvent(#1154, closes #1150): A newlanguage: Option<String>field is populated at all six emit sites foranalyze_fileandanalyze_module, backed by apath_language()helper that reuseslanguage_for_extension(). Schema table inOBSERVABILITY.mdupdated.
Maintenance
- Dependency update:
actions/checkoutv7 (#1158); GitHub Actions updates (#1157);clouatre-labs/aptuaction v0.10.1 (#1141).