https://github.com/metafates/saiga
Terminal emulator [WIP]
https://github.com/metafates/saiga
Last synced: 4 months ago
JSON representation
Terminal emulator [WIP]
- Host: GitHub
- URL: https://github.com/metafates/saiga
- Owner: metafates
- Created: 2024-10-01T18:16:09.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2025-02-10T12:38:58.000Z (5 months ago)
- Last Synced: 2025-02-10T13:37:11.480Z (5 months ago)
- Language: Rust
- Homepage:
- Size: 479 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Saiga
SIMD+GPU accelerated terminal emulator. Work in progress.
It is heavily based on [Alacritty](https://github.com/alacritty/alacritty) terminal
with some ideas taken from [Ghostty](https://github.com/ghostty-org/ghostty).- SIMD accelerated VTE parser which applies various
optimizations for processing UTF-8 in parallel.
- WebGPU frontend with damage tracking and partial screen updates## Performance
Saiga aims to be fast.
Right now it lacks many useful (and not so) features and optimizations.
However, it can already outperform Alacritty terminal on [alacritty/vtebench](https://github.com/alacritty/vtebench)
The screenshot above demonstrates results of the benchmark.
Alacritty is on the left, Saiga is on the right.
Apple M3 Pro, 36 GB RAM compiled with PGO## Building
You will need rust stable toolchain.
Install [just](https://github.com/casey/just) command runner
Build without profile guided optimizations.
_You might want them, as they give significant performance boost_```bash
just build# You can then run saiga like that
./target/release/saiga
```Build with profile guided optimizations:
> [!IMPORTANT]
> On macOS you will need to install latest `llvm` tools: `brew install llvm` **AND** follow the instructions it will give you after the installation, like properly adding it to the `$PATH````bash
# First, you need to generate a profile. To do so, run
just generate-pgo# It will compile and run saiga in special mode for generating PGO data.
# Do something with it you would normally do with terminal, like using vim.
# You can also run vtebench with it.# After you're done recording your profile close the terminal and merge generated profile data
just merge-pgo# And compile with it
just build-pgo# You can then run saiga like that
./target/release/saiga
```