-
Notifications
You must be signed in to change notification settings - Fork 38.9k
Test terminal performance and Windows support improvements #19071
Copy link
Copy link
Closed
Labels
Milestone
Description
- Linux @roblourens
- OSX @bpasero
- Windows @dbaeumer
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:
- Arrow keys wording in Bash on Windows Arrow keys don't work in Ubuntu Bash on Windows #10163
- Git Bash, Bash on Windows prompt and other shells having their prompt getting out of sync when using backspace Backspace, left and right in Windows integrated terminal cause prompt to go out of sync in Git bash #7345
- Prompt screwing up when using tab In Integred Terminal, press Tab to next file, leaves blank space and traces #16914
- Many other issues Many shells launched from the integrated terminal on Windows don't function in various ways #14613
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 -lRextensively 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)
Reactions are currently unavailable