Newest first. Entries are the project's headline features and capabilities
for users: new language support, analysis, querying, graph, and integrations.
They are NOT for CI, developer tooling, release or build automation, refactors,
documentation, tests, or bug fixes; leave that kind out. Every entry above the
latest-release-end marker is rendered into the README's "Latest News"
section by scripts/generate_readme.py, so edit entries here rather than in
the README. The release workflow prepends feature entries via
scripts/update_news.py, derived from the release's generated Highlights
(dropping non-feature themes), and moves the marker below the block it
inserted; hand edits remain welcome between releases and render too.
- File System Operations: Improved handling of file system operations with platform-neutral joins and safeguards against removing project root.
- Cache Management: Enhanced cache management with atomic publishing, dedicated cache stamps, and improved deletion handling for orphan caches.
- Graph Querying: Introduced deterministic graph query tools for more precise analysis of code relationships.
- Re-ingestion & Parsing: Improved re-ingestion processes, including handling of deleted files, re-parsing of related files, and rebuilding of key data structures.
- Security & Stability: Addressed security concerns by blocking removal of project root and improved stability by preventing skipped edits and handling orphaned caches.
- C++ & Go Integration: Enhanced integration with C++ and Go, including parsing of module interfaces and handling of module-level class aliases.
- Index Consistency: Ensure incremental deletes match clean index states.
- Patch Reporting: Distinguish between unverifiable and verified patches in reports.
- Windows Teardown: Clear the read-only bit when removing a temp repo for successful Windows teardown.
- TypeScript Grading: Grade TypeScript inheritance against the tsc oracle for improved accuracy.
- Exclude Set Handling: Record the exclusion set to ensure
--excludeflags are correctly applied across runs. - MCP Indexing: Honour
.cgrignoreand.gitignorein MCP index and update processes, matching the CLI. - Transactional Multi-File Edits: Multi-file edits now run as a transaction with staged verification and undo, alongside concrete-syntax-preserving patchers per language and import rewriting for renames and moves.
- Scala Inheritance and Markdown Front-Matter: Scala
INHERITSedges are read fromextends/withclauses, and declared Markdown front-matter is read onto theModulenode. - Graph Retrieval: MCP and CLI graph retrieval is scoped to one project, and call-site and import-site locations are now stored on graph edges.
- Direct MCP Tools:
find_duplicate_codeandget_function_sourceare exposed as direct MCP tools, and PHPuse functionimports resolve through declared namespaces. - Graph Indexing: The name property is now indexed for improved graph read-path lookups. SQL routines are also indexed to resolve calls that name their target in a string.
- Duplicate Code Detection: An AST-based duplicate code detection system has been introduced, alongside fixes for duplicate detection across multiple repositories.
- Agentic QA: A new agentic QA benchmark harness and indexing-time benchmark have been added.
- Java Taint Improvements: Enhanced taint tracking in Java, including handling JDK shims, chained call receivers, literal arguments, and type-test patterns.
- C# Taint Propagation: Improved taint propagation in C# with refinements to argument binding, tuple deconstruction, and await plumbing methods.
- Semantic Frontend Enhancements: Added in-process Jedi semantic frontend for Python and re-run semantic frontends on the watch path for more accurate analysis.
- Protocol Buffer Indexing: Introduced a canonical protobuf index with provenance manifest and a verify command for improved data integrity.
- Structural Analysis: Added structural snapshot diffs between protobuf indexes and structural ast-grep support for seven additional languages.
- Runtime Call Tracing: A dynamic tracer runs your code (typically the test suite) and merges the calls that actually happened into the graph as
CALLSedges (flagged where static analysis missed them), so dispatch through interfaces, virtual methods, function pointers, reflection, and framework routing becomes visible. Convert a run from Python, the JVM, Node.js, .NET, PHP, Lua, Dart, Go, Rust, or C/C++ withcgr trace, or ingest production pprof profiles from an eBPF continuous profiler (Parca, Pyroscope, OpenTelemetry) withcgr trace convert --format ebpf. - Ruby Support: Ruby joins the graph through a new pluggable ast-grep tier that adds a language from a single YAML pattern file, emitting
Module,Function, andClassnodes plus import edges without a hand-written parser. - Structural Search & Replace: Find and rewrite code by AST pattern with ast-grep, exposed as agent tools so you can match and transform structure across the whole codebase instead of relying on text or regex.
- Data-Flow Tracing: New
FLOWS_TOtaint edges follow values through assignments, function calls, and I/O sinks. This release adds C#, Java, C, and Go, bringing tracing to 10 languages (Python, JavaScript, TypeScript/TSX, Go, Java, Rust, C++, C, and C#). - C# and Dart Support: Full C# (with Roslyn semantic analysis) and Dart/Flutter now join the graph, bringing the total to 14 supported languages.