Skip to content

4.0.0

Choose a tag to compare

@celonymire celonymire released this 22 Jan 17:20
· 84 commits to main since this release

Added

  • Persistent sessions for running testcases and stress tester. Whenever the active editor changes, the previous session is saved and restored when the file is opened again
  • Default run and debug configurations for C++, Python, Java, Go, Rust, JavaScript, Haskell, Ruby, and C# (no default debug configurations for Kotlin due to breakpoints not functioning)
  • Ctrl+Enter hotkey to save currently edited textarea
  • Ctrl+Enter to append newline instead of sending current online input
  • Automatically show notification to check changelog when extension is updated
  • Option to create file directly from the error popup if it doesn't exist
  • ${debugPid} for PID of the process for debugging
  • Example debug command and attach configurations for C++, Python, and Java as well as convenient ways to automatically add them to launch.json file
  • Toggle show details button for stress tester as well as more statuses for judge
  • Icon to open the corresponding file for stress tester
  • Icon to open the interactor for judge
  • Command and context menu to change the port for Competitive Companion

Changed

  • Use native addons to run solutions and enforce limits instead of using child_process. This bypasses the event loop and allows for more accurate limits as well as accurate metrics. Using native addons also means we effectively restrict this extension to only run on Windows, Linux, and macOS.
  • Use total CPU time to enforce time limit and a 2x multipler to enforce the wall time
  • Changes are debounced on judge prevent rapid IO bottlenecks
  • Trim off trailing whitespaces when requesting full data
  • Don't save ongoing running statuses to avoid blocking interacting with testcase on malfunction
  • Allow showing testcase details on compiler error status
  • Enhanced integrated view to display compilation output and errors
  • Made the bubble texts in the UI more compact
  • Combined IO from solution and interactor to display the order of interactions
  • Optimized the toolbar of the judge and stress tester to avoid unnecessary updates
  • Stress tester now opens the file for added testcase

Fixed

  • Leading newline when adding real-time inputs to empty saved input
  • Seed for generators in stress tester not utilizing full 64-bit integer range
  • Tooltip not updating when the attribute changes
  • Compilation errors being double logged resulting in unhandled promise rejections
  • Interactor file compiling prematurely setting status of the testcase
  • Race condition due to unnecessary async calls causing status to be incorrect in few scenarios
  • Stress Tester would hang in some situations when some files returned with non-zero exit code
  • Interactive testcase status being overridden when saving new interactor secret during the run
  • Testcase runtime errors weren't detected when the interactor had failure causing it to not return an exit code
  • Testcase stuck in running state when settings for the file were invalid or not found

Removed

  • Web platform support explicitly (it would've never worked before)
  • Walkthrough. It never showed up by itself and was only accessible through the command palette. The README already covers majority of the information and the built-in error messages help fill in the necessary information.
  • Removed unused save all functionality
  • Removed custom caret placing from the textarea because it acts inconsistently with the custom truncated display of IO texts