Lattice v0.9.1

A modal, GPU-accelerated, plugin-first text editor in Rust

Combines vim's modal editing power with emacs's extensibility model on a non-blocking, multi-threaded core.

Lattice editing a buffer, with the project file tree and a describe-buffer popup open

Four Paramount Goals

Performance

Imperceptible keystroke→glyph latency — within one display frame under any load, ratcheted by CI.

🧩

Extensibility

WebAssembly Component Model plugin host. Any language (Rust, Zig, Go, …). Capability-gated, crash-isolated. Org-mode is a plugin, not a feature — and the reference for writing your own.

⌨️

Vim Modal Editing

Strict vim semantics. The grammar IS the public command API. Extensible motions, operators, and text objects.

⚙️

Asynchronicity

Three-layer architecture via typed message passing. Multi-threaded by construction. Nothing blocks the UI.

Design Principles

Everything is a buffer

File tree, diagnostics, terminal, REPL — all are buffers placed by the user into panes via splits. No fixed sidebar or bottom-panel concept. :bn, :bp, :ls, :bd work uniformly across all kinds.

Modes own their surface

A feature is a mode that owns its keymaps, action handlers, decorations, and subscriptions. The host is a thin substrate with no per-feature branch. A new provider crate adds zero Editor:: methods.

One extension substrate

WASM Component Model is the single substrate for plugins AND user configuration. No Lua, no vimscript, no elisp. TOML for static data; init.rs (compiled to WASM) for programmable config.

Current Status

v0.9.1 — alpha

Vim modal grammar, LSP (completion, diagnostics, hover, rename, references, code actions), tree-sitter across 20 languages, a magit port, a WASM Component Model plugin host, and two renderers (terminal + GPU) — all shipped and usable today.

View implementation ledger →
~0.7ms p50

Keystroke→glyph latency (TUI, debug build, 2300-line file). Ratcheted — CI fails on regression. Target: within one display frame.

View benchmarks →
v0.9.1

Pre-1.0 — breaking changes expected. The GPU renderer isn't at parity with the terminal one yet, syntax colours aren't fully themeable, and a few grammar/command corners (see known limitations) are still open.

Read the docs →

Quick Start

# Install (macOS, Linux)
curl -fsSL https://raw.githubusercontent.com/dhruvasagar/lattice/main/install.sh | sh

# Open a file
lattice README.md

# Or with the GPU renderer
lattice --gui README.md

Installs into ~/.local, plus the bundled core plugins. Building from source instead? cargo build --release alone starts an editor with no bundled plugins and no error — you also need cargo xtask build-core-plugins. See the install guide for the full from-source steps, release archives, and Windows.

Ready to try Lattice?

Open source. MIT licensed. Built with Rust.