An open API service indexing awesome lists of open source software.

https://github.com/metafates/saiga

Terminal emulator [WIP]
https://github.com/metafates/saiga

Last synced: 4 months ago
JSON representation

Terminal emulator [WIP]

Awesome Lists containing this project

README

        

# Saiga

Screenshot 2025-02-01 at 19 23 32

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)

vtebench results

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
```