Skip to content

Test terminal performance and Windows support improvements #19071

@Tyriar

Description

@Tyriar

Testing #13625, #17875

Complexity: 4 (ideally someone fairly familiar with terminals and curses apps)

Much of the terminal frontend xterm.js was rewritten for performance this version, here is a summary of what happened:

  • The parser was rewritten for performance
  • A catch up mechanism was added which utilizes XOFF/XON signals to tell the pty process to stop while the parser and renderer catch up
  • Rendering is now done asynchronously in an animation frame callback
  • Additional frame skipping was added to prevent printing to the viewport when the result would change 20ms later anyway
  • A circular list is now used to manage the buffer, promoting memory reuse, reducing GCs and automatically handling trimming of the buffer to conform with the scrollback value (amount of lines kept in the buffer)
  • General rendering performance improvements

Additionally on Windows the library used to simulate pseudoterminals has been upgraded several versions and cleaned up which was a huge change that should fix many bugs such as:

As a result a fairly broad test would be ideal. Here are some areas to focus on:

  • Running commands that generate a lot of output, I used ls -lR extensively to test during development
  • Applications such as less, vim, nano, git, etc. act as expected
  • The scroll bar accurately represents the current viewport
  • The terminal behaves when the terminal buffer is not full (new terminal) and full (buffer length = scrollback)
  • Test with different shells
    • Linux/OSX: bash, zsh
    • Windows: cmd, powershell, Git Bash, Bash on Windows (may require Windows Insiders)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions