I don't understand why terminals aren't implemented like game engines. (rant)

Posted by funbike@reddit | linux | View on Reddit | 62 comments

I don't understand why the raw speed of terminals is so important. I'm currently using Alacritty terminal and I chose that because of its raw speed due to its use of GPU. But I don't really understand why that's necessary. I don't understand why these terminals aren't implemented like a game engine. In most game engines, the screen is updated asynchronously with the gameplay. So, generally, the game plays the same way no matter how fast your graphics pipeline is. The only difference between faster and slower hardware is the frame rate is.

Terminals can be implemented the same way. The text framebuffer could be read asynchronously to update the graphics framebuffer. But it seems like these terminals are implemented so that those are synchronous. When a program outputs something through its standard output, it is drawn immediately. It seems to me that if this was decoupled, you would have insanely fast terminals. And the only reason why you might want a terminal that uses the GPU is your brain is so fast you can keep up with 100+ frames per second of text scrolling by.

I'd really love it if Tmux implemented something like this, as it is the biggest bottleneck on my setup. Decouple its internal text framebuffer with the ouptput terminal app.

This is really a rant of sorts as there's no easy way to solve this other than someone implementing a new terminal or re-implementing a terminal's graphics pipeline. I just wanted to get it out.