Skip to content

Patch Release - Performance and Stability Improvement

Latest

Choose a tag to compare

@techy4shri techy4shri released this 01 Dec 18:56
· 1 commit to main since this release
76f6b2b

Maintenance release addressing file modification tracking issues and improving application stability.
This release is a culmination of multiple commits related to performance, stability and overall app experience after getting feedback.

Fixed

  • Critical: File modification indicator (asterisk) now correctly reflects document state after save operations
  • Critical: Spurious textChanged signals during file load no longer trigger false modification state
  • Critical: Document modification state properly synchronized between Qt's internal tracking and application UI
  • File save operations no longer cause immediate re-marking of files as modified
  • New file creation no longer incorrectly marks files as modified before any edits
  • Editor tab titles now accurately reflect saved/unsaved state without manual intervention

Added

Documentation:

  • TROUBLESHOOTING.md with Wine compatibility guidance and common issue resolution
  • Wine/Linux limitations documented with source installation instructions
  • README.md updated with platform compatibility warnings

Changed

  • Problems table now read-only to prevent accidental edits while preserving copy functionality
  • All program types now execute in external terminal windows for consistent I/O behavior
  • File modification tracking migrated to Qt's QTextDocument.isModified() for reliable state management
  • Signal-based architecture for modification state changes using custom pyqtSignal

Performance Improvements

  • Trie-based syntax highlighting for O(n) keyword matching instead of O(n*m) regex operations
  • LRU cache on toolchain detection for faster repeated lookups
  • Debounced syntax highlighting with 200ms delay to reduce CPU usage during rapid typing
  • Precompiled regex patterns for string and comment matching
  • Optimized highlightBlock() implementation reducing editor lag on large files

Technical Improvements

  • Implemented proper signal blocking during file load operations to prevent false positives
  • Added _loading flag to distinguish between programmatic and user-initiated text changes
  • Modified save_file() to explicitly set document modification state via setModified(False)
  • Refactored _on_text_changed() to check document.isModified() as source of truth
  • Disconnection and reconnection of textChanged signal during file loading for clean state initialization
  • FastSyntaxHighlighter class with TrieNode data structure for efficient keyword lookup

Known Issues

  • Windows-only distribution (Wine compatibility not supported for PyInstaller builds)
  • Large size of the app folder