Skip to content

Changelog

Adaptive Granularity & Compact Diffs

  • Adaptive Granularity Controller: Automatically selects between MicroCompact, Standard, and FullStructural display modes based on changeset size, delivering a +85.9% Noise Suppression Ratio (NSR).
  • Micro-Compact Renderer (--compact): High-density 1-3 line inline token diff output for single-line changes and micro-commits (~ src/server.rs:L42 [MODIFY] port: 8080 -> 3000 (95%)).
  • Verbose Diagnostic Flag (--full-headers / --verbose): Forces full structural banners, timing diagnostics, and blast radius tables.

Cross-File Call Graph & Blast Radius Engine

  • Call Graph DAG (src/call_graph.rs): Extracts function definitions and call sites across files to build repository call graph DAGs.
  • Transitive Blast Radius Calculation: Computes downstream caller impact up to depth 5 with severity classification (LOW, MEDIUM, HIGH) when function signatures or interface contracts change.

Semantic Type Equivalence & Safety Contracts

  • Contract & Safety Guard Alerting (src/semantic_type.rs): Detects removed null checks (REMOVED_NULL_CHECK), deleted bounds guards (REMOVED_BOUNDS_CHECK), stripped mutex concurrency locks (STRIPPED_LOCK_GUARD), and omitted resource cleanup (OMITTED_RESOURCE_CLEANUP).
  • Type-Safe Refactoring Identification: Recognizes safe idioms such as Option-to-Result conversions and primitive widening (i32 -> i64).

Declarative AST Semantic Linter (symtrace lint)

  • Standalone lint Subcommand: Evaluates custom Tree-sitter .scm rules across codebases with automated CI failure thresholds (--max-warnings <N>).
  • Severity & Message Directives: Supports ;; @severity ERROR|WARN|INFO and ;; @message templates with $file and $line variable interpolation.

AI / LLM Context Optimization Format (--format prompt)

  • Token Density Optimization: Emits structured semantic diff context reducing prompt token consumption by ~80% for AI coding assistants (Gemini, Claude, GPT).

Two-Tier CAS Diff Caching & SIMD Acceleration

  • Precomputed CAS FileDiff Cache (src/ast_cache.rs): Keyed by DiffCacheKey (old_blob_oid || new_blob_oid || logic_only || limits_hash), returning warm diff records in under 0.004 ms.
  • SIMD Multiset Jaccard (src/semantic_similarity.rs): AVX2/SSE 16-bin frequency histogram computation (simd_jaccard_histogram_16) and 64-bit token bitset pre-filtering (token_bitset).
  • 16-Shard RwLock & Atomic Commits: Thread contention eliminated on 32+ core systems; cache files written atomically to prevent partial corruption.

AST Merge Driver Hardening (src/merge_driver.rs)

  • AST Scope Splicing & Re-parse Validation: Validates syntax integrity via tree-sitter re-parsing (has_ast_errors()) before committing 3-way merge resolutions.

Test Suite & Benchmark Validation

  • 100% Pass Rate: 332 automated invariant and property-based tests passing in ~0.72s.

Core Architectural & Performance Overhaul

  • Zero-Copy Git Blob OID Caching: Keying directly off Git Blob OIDs (git2::Oid), warm cache lookups bypass file loading and tree-sitter parsing for <1ms execution.
  • Single-Handle Shared Reader (SharedBlobReader): Replaced per-thread repository opening with lock-free shared Git blob access, delivering a 35% to 45% I/O speedup.
  • Native Git Rename Detection: Enabled diff.find_similar() in git2::DiffOptions to leverage Git’s native rename hints before AST parsing.
  • Thread-Local Arena & Parser Pool (BumpaloRecycler): Recycles bumpalo::Bump arenas and tree_sitter::Parser instances across worker threads, reducing memory footprint by 50%.
  • Global Multi-File AST Node Index (GlobalNodeIndex): Multi-file AST node indexing unifies cross-file MOVE and RENAME detection at O(N log N) complexity.
  • Subtree Diff-Window Parsing: Constrains AST tree comparison for large files (>1 MiB) to modified diff hunks.

Developer Experience (DX) & Tooling

  • Interactive Terminal UI Inspector (symtrace tui) - Keyboard-driven workspace built with ratatui featuring split-pane refactor navigation, symbol search, and call graph visualization.
  • 3-Way AST Semantic Merge Driver (symtrace merge-driver) - Native git merge-driver for zero-conflict rebases, resolving non-conflicting structural changes with zero merge markers.
  • Custom Query DSL Engine (.scm) - Define enterprise-specific semantic rules and security alerts using standard Tree-Sitter .scm query files in .symtrace/queries/.
  • Git CLI Feature Parity - Added --stat (-s), --check (exit code 1 pre-commit / CI guard), --name-only, --format (ansi, json, jsonl, markdown, html, sarif), and -U<N> AST context depth.
  • Expanded Language Support - Expanded to 13 first-class languages: added C# (.cs), Ruby (.rb), PHP (.php), Rust 2024 Edition (.rs), and TSX / JSX (.tsx, .jsx).

New Features

  • Expanded Language Support - 9 first-class languages/formats supported: Rust (.rs), JavaScript (.js, .jsx, .mjs, .cjs), TypeScript (.ts, .tsx), Python (.py, .pyi), Java (.java), C (.c, .h), C++ (.cpp, .hpp, .cc, .cxx, .h++), Go (.go), and JSON (.json, .jsonc).
  • Native Git Diff Driver - Added symtrace git-diff-driver subcommand for native integration into git config and .gitattributes.
  • Path Glob Filtering - Filter diff analysis using --path <GLOB> (-p), allowing targeting of specific file patterns.
  • Positional Argument Defaults - Running symtrace with no arguments automatically defaults REPO_PATH to ., COMMIT_A to HEAD~1, and COMMIT_B to the working tree.
  • Staged Index Comparison - Support for --staged / --cached flags to compare staged index files against COMMIT_A.
  • Interactive Shell Pager - Automatic output piping to $GIT_PAGER / $PAGER (less -RFX) for interactive TTY execution.
  • Configuration File Loader - Hierarchical loader for .symtracerc and symtrace.toml TOML config files (CLI Flags > Repo Config > User Config > Defaults).
  • ANSI Color Controls - Added --color <auto|always|never> flag and [output] color config setting respecting NO_COLOR.
  • Dual-Path Git Rename Tracking - Retains both old_path and new_path across file rename events.

Security & Provenance

  • Enforced zero unsafe Rust (#![deny(unsafe_code)]).
  • Sigstore/Cosign keyless OIDC signing, SPDX SBOM (symtrace.spdx.json), and GitHub Artifact Attestations added for release assets.

Version Updates

  • Cargo.toml: 0.2.00.3.0

New Features

  • Updated compatibility with Symtrace core engine v0.3.0.
  • Expanded language support in VS Code for C, C++, Go, and JSON (.c, .h, .cpp, .hpp, .go, .json).
  • Added extension settings for --path glob filtering (symtrace.pathGlob) and --color terminal settings (symtrace.color).
  • Improved welcome view with updated language matrix.
  • 4-tier binary resolution strategy (symtrace.path config → system PATH → cached → GitHub releases auto-download).

Version Updates

  • vscode-symtrace/package.json: 0.2.00.3.0
  • Activity bar panel - Dedicated symtrace sidebar with a welcome view.
  • Interactive webview report - Full HTML diff report with collapsible file cards, similarity progress bars, and CSP nonce enforcement.
  • Inline editor decorations - 5 color-coded operation annotations rendered directly in open files.
  • Git commit picker - QuickPick UI for selecting any two commits or comparing a commit against its parent.
  • Auto-download binary - 4-tier resolution for seamless binary acquisition.
  • Side-by-side diff view - Compare old vs new file content via git show content provider.
  • Tree view - Browse operations per file with classification badge, summary, and performance metrics.
  • Cache directory Unix permissions set to 0o700 (owner-only).
  • Repository path validation with explicit is_dir() checks.
  • Dynamic version generation via env!("CARGO_PKG_VERSION").
  • Graceful Mutex poisoning recovery in AstCache and TreeCache.
  • Initial public release of the CLI engine with AST-based semantic diffing, tree-sitter language support, and JSON output format.