mirror of
https://github.com/wez/wezterm.git
synced 2024-11-26 08:25:50 +03:00
8002a17242
The previous commit added the option to convert the storage to the cluster format. That saves memory as rows are moved to scrollback, but makes scrolling back more expensive due to that conversion. This commit adds a fast(ish) path for the common case of simply appending text to a new line before it gets scrolled: the default format for lines in the screen is now the cluster format and, provided that the cursor moves from left to right as text is emitted, can simply append to the cluster storage in-place and avoids a conversion when the line is moved to scrollback. This improves the throughput of `time cat enwiki8.wiki` so that the runtime is typically around 11-12s (compared to 9-10s before introducing cluster storage). However, this is often a deal of variance in the measured time and I believe that that is due to the renderer triggering conversions back to the vec storage and introducing slowdowns from the render side. That's what I'll investigate next. |
||
---|---|---|
.. | ||
src | ||
Cargo.toml | ||
README.md |
wezterm-term
This crate provides the core of the virtual terminal emulator implementation used by wezterm. The home for this crate is in the wezterm repo and development is tracked at https://github.com/wez/wezterm/.
It is full featured, providing terminal escape sequence parsing, keyboard and mouse input encoding, a model for the screen cells including scrollback, sixel and iTerm2 image support, OSC 8 Hyperlinks and a wide range of terminal cell attributes.
This crate does not provide any kind of gui, nor does it directly
manage a PTY; you provide a std::io::Write
implementation that
could connect to a PTY, and supply bytes to the model via the
advance_bytes
method.
The entrypoint to the crate is the Terminal struct.
License: MIT