microsoft / microsoft/terminal

Unbuffered output speed regression

Open
#18,811 11 comments 0 reactions 0 assignees View on GitHub
Area-TerminalControl Issue-Bug Priority-2 Product-Terminal
Dominant language
C++
Stars
105k
Forks
9.6k
Avg merge
3d 17h
Merged PRs (30d)
29

Description

### Windows Terminal version

1.22.10731.0

### Windows build number

10.0.19045.5737

### Other Software

Bat (the cat(1) clone with wings)
Any GNU util that doesn't ignore the -u flag (cat(1) ignores nowadays, bat is always unbuffered)
... Don't have more easily accessible examples on hand

### Steps to reproduce

Run any command that produces half a screen or more of unbuffered output, e.g. tab autocompletions in bash (git, msys2, but not WSL)

### Expected Behavior

(reasonably) fast printing of output

### Actual Behavior

through WSL, exactly the thing I expect. When unbuffered, I can see every line being printed separately. When paging is involved, I can see line by line output happening. When coloration is involved, scrolling lines in paged output becomes extremely slow.

On the bright side, this does help pinpoint what utils have room for improvement. On the not-so-bright side I'm sometimes actively waiting for output to finish. This is something that's changed in the last couple of updates (I'm on the manual track and am not very frequent with checking, sorry)

Contributor guide

Open the contributing guide

Research direction

Start by reproducing the regression in Windows Terminal 1.22.10731.0 with half a screen or more of unbuffered output, such as bash tab completion or Bat, and compare buffered, unbuffered, paged, colored, and WSL output. No source file or test is named in the report, so trace the output and paging path before identifying the recent change responsible. Done means unbuffered output is reasonably fast without regressing the reported cases.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
cli, performance
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.