Skip to main content
Trace logo

Trace

Explains compiler optimization failures in Rust code. Surface missed vectorizations, failed inlining, unnecessary bounds checks, and more.

Two Tools, One Workflow

Trace CLI

A Rust performance profiling CLI that collects LLVM optimization remarks and turns them into actionable issues with fix hints at specific source locations.

$ trace build --release
analyzing 142 remark files...
found 23 optimization issues
results written to .trace/

VS Code Extension

Surfaces optimization issues directly in your editor with inline diagnostics, hover cards with root cause analysis, and a dedicated tree view panel.

  • Inline diagnostics with severity-coded underlines
  • Hover cards with impact, root cause, and fixes
  • Tree view panel grouping issues by type
  • One-command analysis without leaving the editor

What Trace Detects

Trace classifies LLVM optimization remarks into actionable issue types that tell you exactly what the compiler failed to optimize and why.

Missed Vectorization

Loops that could use SIMD but the compiler chose scalar operations instead.

Missed Inlining

Function calls the compiler chose not to inline, adding overhead on hot paths.

Bounds Checks

Array or slice accesses with redundant bounds checking that could be elided.

Aliasing

Pointer aliasing that prevents the compiler from applying optimizations.

Hot-Path Allocation

Heap allocations on performance-critical paths that could be stack-allocated.

Unpredictable Branches

Branch patterns that defeat CPU prediction, causing pipeline stalls.

How It Works

1

Build with Remarks

trace build compiles your project while capturing LLVM optimization remarks from the compiler.

2

Classify Issues

The CLI processes remarks into structured issues with types, locations, evidence, and fix hints.

3

Surface in Editor

The VS Code extension watches .trace/ artifacts and maps issues to inline diagnostics.

4

Fix & Iterate

Hover cards show root cause analysis and suggested fixes. Re-run to verify improvements.

Stop Guessing, Start Profiling

Trace gives you the compiler's perspective on your code. See exactly which optimizations failed and why — then fix them with confidence.