Skip to content

Implement incremental analysis and intelligent caching #17

@krystophny

Description

@krystophny

Summary

Implement incremental analysis to avoid re-analyzing unchanged code sections, significantly improving performance for large codebases and real-time IDE scenarios.

Current State

  • Basic AST caching exists but was disabled due to memory safety issues
  • test_incremental_analysis.f90 - 12 tests failing
  • test_intelligent_caching.f90 - 11 tests failing
  • test_cache_integration.f90 - Some basic caching works

Implementation Requirements

Phase 1: Safe AST Caching

  • Implement deep copy mechanism for AST nodes
  • Create cache invalidation strategy based on file modifications
  • Add memory-safe cache storage with proper lifecycle management
  • Implement cache hit/miss metrics

Phase 2: Incremental Analysis

  • Track file dependencies and module usage
  • Implement partial re-analysis for changed sections only
  • Create dependency graph for cross-module analysis
  • Handle cascading changes efficiently

Phase 3: Intelligent Caching Strategies

  • LRU cache eviction for memory management
  • Persistent cache for frequently accessed files
  • Cache warming on startup
  • Smart preloading based on usage patterns

Technical Design

Cache Key Generation

type :: cache_key_t
    character(len=:), allocatable :: file_path
    integer(int64) :: modification_time
    integer(int32) :: content_hash
end type

Incremental Analysis API

type :: incremental_analyzer_t
    type(ast_cache_t) :: cache
    type(dependency_graph_t) :: dependencies
contains
    procedure :: analyze_changes
    procedure :: get_affected_files
    procedure :: invalidate_cache_entry
end type

Performance Targets

  • Cache hit rate > 80% for typical editing sessions
  • <10ms response time for cached results
  • <100ms for incremental re-analysis
  • Memory usage < 100MB for typical projects

Integration Points

  • LSP document synchronization events
  • File watcher notifications
  • CLI batch processing mode
  • IDE save/format operations

Test Coverage

Expected to fix:

  • test_incremental_analysis.f90 (12 tests)
  • test_intelligent_caching.f90 (11 tests)
  • test_cache_integration.f90 (remaining failures)
  • test_diagnostic_performance.f90 (performance tests)

Benefits

  • 10x performance improvement for large codebases
  • Real-time analysis in IDEs becomes feasible
  • Reduced memory footprint with smart eviction
  • Better user experience with instant feedback

Dependencies

  • Fixed AST deep copying mechanism
  • File modification tracking
  • Memory management utilities

Priority: HIGH

Critical for production use with large Fortran codebases and IDE integration scenarios where performance is crucial.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions